我引用了这个答案来更改默认的shell 如何将默认shell更改为表示“无效shell。。
在将zsh添加到/etc/shells
并执行sudo chsh -s "$(command -v zsh)" "${USER}"
之后,我运行了echo $SHELL
(这没有提供输出,所以我认为它一定已经成功运行了),它给了我/bin/bash
我关闭了shell并打开了一个新的shell会话,zsh出现了,所以我认为它肯定是通过重新启动来修复的,之后当我在zsh会话中运行echo $SHELL
时,它仍然给了我相同的输出,/bin/bash``$SHELL --version
也给了我bash版本,而不是zsh版本。
每次我做ctrl+alt+t时,我都会得到一个zsh会话,但是这个echo $SHELL
输出让我感到怀疑。
更新:我正在运行UbuntuBudgi18.04.3,我从echo $0
那里得到了D9
发布于 2019-12-21 14:01:59
只有在执行完整登录时才会设置SHELL
环境变量,例如,通过再次注销和登录,或者使用su - "$USER"
或ssh "$USER@localhost"
或执行完全登录的其他命令。
通常是login
程序根据用户登录shell在passwd
数据库中的内容来设置这个变量。无论哪个进程接受用户的登录请求(例如,通过sshd
或gdm
等),都会调用它作为登录过程的一部分。
来自Ubuntu的login(1)
手册:
您的用户和组ID将根据它们在
/etc/passwd
文件中的值进行设置。$HOME
、$SHELL
、$PATH
、$LOGNAME
和
仅仅启动一个新的shell会话不会设置这个变量的值,即使shell是作为“登录shell”启动的。
发布于 2021-11-01 21:12:11
想要补充克莎拉南达的优秀和被接受的答案:
在macOS上,如果您想在不注销GUI的情况下查看更改,可以在终端中输入以下内容:
$ logout [your username]
然后打开一个新的终端会话并输入:
echo $SHELL
您将看到您的新环境设置。
https://unix.stackexchange.com/questions/558373
复制相似问题