其中';在OSX中定义的环境变量SHELL和BASH?
当我在bash终端中执行其中';在OSX中定义的环境变量SHELL和BASH?,bash,zsh,Bash,Zsh,当我在bash终端中执行set时,我看到了很多其他东西,但我不知道这些是在哪里定义的: BASH=/usr/local/bin/zsh SHELL=/usr/local/bin/zsh 由于我已经卸载了zsh,我希望确保应用程序没有读取这些环境变量,并尝试使用zsh。我注意到Sublime Text 3会产生错误,因为它读取SHELL环境变量 我已经检查了~/.bashrc和~/.bash_profile,但是它们中没有定义这些环境变量 检查Terminal.app的设置时,它被设置为使用/b
set
时,我看到了很多其他东西,但我不知道这些是在哪里定义的:
BASH=/usr/local/bin/zsh
SHELL=/usr/local/bin/zsh
由于我已经卸载了zsh,我希望确保应用程序没有读取这些环境变量,并尝试使用zsh。我注意到Sublime Text 3会产生错误,因为它读取SHELL
环境变量
我已经检查了~/.bashrc
和~/.bash_profile
,但是它们中没有定义这些环境变量
检查Terminal.app的设置时,它被设置为使用/bin/bash
这些环境变量是在哪里定义的?SHELL
(就像HOME
,USER
,LOGNAME
)是从用户数据库中登录SHELL(主目录和用户名)的值设置的
在OSX上,您可以使用以下命令从用户数据库中读取登录shell的值:
dscl localhost -read Local/Default/Users/$USER UserShell
在大多数其他类似Unix的操作系统上,您可以使用
getent passwd $USER
其中最后一个(冒号分隔)字段通常表示登录shell
要更改SHELL
,您需要更改登录SHELL。这可以通过chsh
实用程序实现。例如,如果要将其设置为bash
,可以使用
chsh -s /bin/bash
更改将在下次登录时生效(仅关闭并重新打开终端窗口是不够的)。请注意,需要给出shell的完整路径,并且必须在
/etc/shells
中列出该路径
BASH
由BASH本身设置,应该扩展到用于运行当前BASH
实例的绝对路径
在您的案例中,它扩展为
/usr/local/bin/zsh
,这让我怀疑它是/bin/bash
的链接或复制版本。我建议在更改登录shell并确认更改生效后删除该链接/文件。检查shell
由设置BASH
是由设置的。@123不,这在这里是个麻烦事。@tripleee在登录后仍然可以在这些文件中的任何一个中设置。shell的启动文件不涉及在这里设置任何一个变量。如果他们要推翻合理的默认值,这可能是一个严重的问题,因此我认为反对意见纯粹是理论上的。