首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >回显$SHELL显示`/bin/bash`‘作为输出,即使在将默认shell更改为zsh之后也是如此。

回显$SHELL显示`/bin/bash`‘作为输出,即使在将默认shell更改为zsh之后也是如此。
EN

Unix & Linux用户
提问于 2019-12-21 12:53:43
回答 2查看 6.5K关注 0票数 4

我引用了这个答案来更改默认的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

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-12-21 14:01:59

只有在执行完整登录时才会设置SHELL环境变量,例如,通过再次注销和登录,或者使用su - "$USER"ssh "$USER@localhost"或执行完全登录的其他命令。

通常是login程序根据用户登录shell在passwd数据库中的内容来设置这个变量。无论哪个进程接受用户的登录请求(例如,通过sshdgdm等),都会调用它作为登录过程的一部分。

来自Ubuntu的login(1)手册:

您的用户和组ID将根据它们在/etc/passwd文件中的值进行设置。$HOME$SHELL$PATH$LOGNAME$MAIL的值是根据密码输入中的适当字段设置的。根据GECOS字段中的条目,还可以设置Ulimit、umask和尼斯值。

仅仅启动一个新的shell会话不会设置这个变量的值,即使shell是作为“登录shell”启动的。

票数 5
EN

Unix & Linux用户

发布于 2021-11-01 21:12:11

想要补充克莎拉南达的优秀和被接受的答案:

在macOS上,如果您想在不注销GUI的情况下查看更改,可以在终端中输入以下内容:

代码语言:javascript
运行
复制
$ logout [your username]

然后打开一个新的终端会话并输入:

代码语言:javascript
运行
复制
echo $SHELL

您将看到您的新环境设置。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/558373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档