【问题标题】:Changing default shell to our own written shell in linux在linux中将默认shell更改为我们自己编写的shell
【发布时间】:2014-05-26 07:10:07
【问题描述】:

我已经在 linux 中编写了一个基本的 shell,并且还实现了一些基本命令,例如 pwd 和 chmod。

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

请帮忙..

【问题讨论】:

  • shellname 是否使用了绝对路径?我想知道这是否有什么不同。

标签: linux bash shell


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 谢谢它的工作,我刚刚打开新终端但重新登录工作。
  • @Mzzl 在这种情况下为什么必须更新影子文件?
  • @Mzzl 我可以建议调用/etc/passwd“密码”文件吗?名字叫小姐领先。
【解决方案2】:

运行:

usermod -s /usr/bin/newshell username

【讨论】:

    【解决方案3】:

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

    我不知道你为什么要创建一个新的 shellscript,当它只是为了练习时,你可能希望在 .profile 中提供一个临时解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 2017-08-11
      • 2016-07-15
      • 2014-08-29
      • 2015-03-14
      • 2011-10-01
      • 1970-01-01
      相关资源
      最近更新 更多