我用C ++创建了一个自定义的shell。目前,shell被设计为无限循环,通过从终端运行相应的可执行文件启动(我使用Ubuntu作为我的操作系统)。 shell实现了一些新命令,每个命令都作为单独的可执行文件存储在文件系统中。用户输入的其余命令直接使用execve()
包装函数执行。
因此,基本上,我正在使用execve()函数执行所有用户命令:自定义命令存储为单独的exectuable并且是" exec
ed"通过提供可执行文件的路径,而任何其他"标准" unix命令直接exec
编辑。
我希望 让用户使用我的shell 执行,而不是将其作为bash
的单独可执行文件运行终端 。我怎么能这样做?
我提到了以下链接:
Processes and Sessions and Controlling Terminals
但是,我无法想出控制终端和shell之间的关联等链接。在这方面,我们将不胜感激。
更新
这可能听起来有点不合逻辑但是:
有没有办法将它作为用户可以从当前shell执行的用户命令来实现?我知道有一个名为chsh的命令...但是它能用于我的shell吗?
答案 0 :(得分:1)
首先,您可以使用exec yourshell
从bash测试shell。这个完全用你的shell替换 bash进程。 (退出shell时,终端将退出/注销。)
您还可以运行xterm -e yourshell
以使用shell而不是bash启动xterm。
如果您想永久地将其设为默认shell:
/etc/shells
chsh