创建自定义shell

时间:2015-03-28 14:25:06

标签: c++ linux bash shell unix

我用C ++创建了一个自定义的shell。目前,shell被设计为无限循环,通过从终端运行相应的可执行文件启动(我使用Ubuntu作为我的操作系统)。 shell实现了一些新命令,每个命令都作为单独的可执行文件存储在文件系统中。用户输入的其余命令直接使用execve()包装函数执行。

因此,基本上,我正在使用execve()函数执行所有用户命令:自定义命令存储为单独的exectuable并且是" exec ed"通过提供可执行文件的路径,而任何其他"标准" unix命令直接exec编辑。

我希望 让用户使用我的shell 执行,而不是将其作为bash的单独可执行文件运行终端 。我怎么能这样做?

我提到了以下链接:

Processes and Sessions and Controlling Terminals

Creating a UNIX shell

但是,我无法想出控制终端和shell之间的关联等链接。在这方面,我们将不胜感激。

更新

这可能听起来有点不合逻辑但是:

有没有办法将它作为用户可以从当前shell执行的用户命令来实现?我知道有一个名为chsh的命令...但是它能用于我的shell吗?

1 个答案:

答案 0 :(得分:1)

首先,您可以使用exec yourshell从bash测试shell。这个完全用你的shell替换 bash进程。 (退出shell时,终端将退出/注销。)

您还可以运行xterm -e yourshell以使用shell而不是bash启动xterm。

如果您想永久地将其设为默认shell:

  1. 将您的shell添加到系统shell列表/etc/shells
  2. 使用chsh
  3. 更改用户的登录shell
  4. 退出并重新登录