为什么修改后还是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
您将再次进入前一个会话。