为什么 echo $0 即使在更改后仍显示默认 shell?

为什么 echo $0 即使在更改后仍显示默认 shell?

为什么修改后还是echo $0显示?-bash我将 shell 更改为,zsh但当我尝试时echo $0,它仍然显示“-”

我做了什么......我使用检查了可用的外壳

cat /etc/shells

其中显示 /bin/bash /bin/zsh ...

我曾经chsh -s /bin/zsh换过外壳

答案1

到目前为止,没有任何答案或评论明确说明chsh真正的作用。

你似乎认为chsh改变当前的外壳。不会。它只会更改一些记录,告诉操作系统您的登录 shell 是哪个 shell。该记录在您的登录 shell 即将启动时开始计数。当前 shell(或任何其他已启动的 shell)不受影响:它不会变形为另一个 shell,它不会被杀死并被另一个 shell 替换。

像“注销并重新登录”这样的解决方案是有效的,因为重新登录后,您可以访问您选择的登录 shell。任何检查您的登录 shell 并运行它的命令(而不是运行一些独立于您选择的固定 shell)都可能是一个解决方案。su这个另一个答案就是这样的命令。

答案2

作为凯勒姆指出,您仍然处于相同的用户环境中。

要刷新它,您应该注销并再次登录,或者,如果您愿意,可以使用su命令重新登录而不会丢失当前会话:

su - $USER

那么你的echo $0意志就会正常工作。

退出此会话后,exit您将再次进入前一个会话。

相关内容