在Linux中将默认shell更改为我们自己编写的shell

时间:2014-05-26 07:10:07

标签: linux bash shell

我在linux中编写了一个基本shell,并且还使用了一些基本的命令,如pwd和chmod。

我想在终端打开时将我创建的shell(可执行文件)设置为默认shell。我尝试了chsh -s shellname,遗憾的是它什么都没做.echo $ SHELL仍然将/ bin / bash作为当前shell。我还编辑了/ etc / shells文件并在最后添加了我的shell。

请帮助..

3 个答案:

答案 0 :(得分:6)

用户帐户的登录shell在不公平的/etc/passwd文件中定义。只需使用纯文本编辑器进行更改(例如joe /etc/passwd):

这是一个典型的示例条目:

john:x:1000:100:John Doe:/home/john:/bin/bash

最后,您可以看到配置为帐户登录shell的可执行文件的绝对路径。只需将其更改为您的自定义shell即可。

请注意,这会更改登录shell 。所以要看到你必须重新关注的效果,而不仅仅是打开一个新的终端。因此,要么通过使用ssh连接到localhost,要么使用logout / login到图形桌面来测试它。

答案 1 :(得分:2)

执行命令

usermod -s /usr/bin/newshell username

答案 2 :(得分:0)

正确的答案是更改/ etc / passwd,如@arkascha所解释的那样 你需要root并确保你的脚本有效。 另一种方法是在登录脚本$ HOME / .profile
的末尾添加脚本 当你完成并退出(或ctrl-d)后,你将返回默认的shell。 您可以提供其他命令或再次退出 在.profile末尾添加exit将阻止第二次退出。 不确定要退出吗?在最后一次退出之前放入睡眠2,可以使用ctrl-c。

我不知道为什么你创建了一个新的shellcript,当它仅用于练习时你可能需要在.profile中使用临时解决方案。