我通过 MacPorts 安装了 bash 4.0,然后用它sudo chsh -s /opt/local/bin/bash my_user
来更改我的 shell。
在此之前,我尝试过chsh
不带任何命令直接运行sudo
,但它不允许我将 shell 更改为该路径。
现在,当我尝试启动终端时,我收到一条消息,提示我的 shell 具有非法值,因此终端无法启动。我单击“退出”,不出所料,它立即退出了,这很烦人。
- 我如何重置我的 shell 以便可以再次启动终端?
- 如何将我的 shell 设置为通过 MacPorts 安装的 bash 以使其可以正常工作?
- Terminal 为什么认为我的 shell 是非法的?它站在新禁酒主义者一边吗?
Mac OS X 10.5.8。一切都超级最新。
答案1
打开 ~/Library/Preferences/com.apple.Terminal.plist 并将“Shell”键设置为“/bin/bash”,然后重试打开终端。如果此操作无效,X11.app 可能能够打开终端。否则,您将不得不创建具有管理员权限的新用户并在那里重置 shell。
通过在终端中运行来确保 /opt/local/bin/bash 可执行。如果不是:
chmod +x /opt/local/bin/bash
此外,/opt/local/bin/bash 应该是 /etc/shells 中的一行。
答案2
更改用户配置文件的 shell 的另一种方法(类似于 chsh 命令,但使用 GUI)是执行以下操作:
- 打开系统偏好设置.app
- 转到“帐户偏好设置”窗格
- 如果需要解锁挂锁
- 按住 Control 键并单击或右键单击帐户列表中的帐户。
- 选择高级选项...
- 将“登录 shell:”的值更改为您想要使用的 bash shell 的路径。
我建议将其重置回 /bin/bash,然后在终端中/opt/local/bin/bash
运行以确保其正常运行/opt/local/bin/bash
,然后再尝试再次更改它。
至于为什么说你不被允许,是因为 Mac OS X 保留了一个“允许”的 shell 列表,/etc/shells/
所以你需要编辑该文件并将其添加/opt/local/bin/bash
到该列表中。
答案3
问题出在/etc/shells
文件上。该文件包含允许用作登录 shell 的所有 shell 的列表。如果您想使用 MacPorts 安装的 bash,则应编辑此文件以包含该特定 shell 的路径。