无法在 macOS 上修改 /etc/shells 以包含 brew 安装的 bash 版本

tal*_*mjr 3 macos bash shell homebrew

我正在尝试更新我的/etc/shells文件以包含bash其所在的自制软件安装版本的路径/usr/local/bin/bash

$ sudo echo /usr/local/bin/bash >> /etc/shells 返回权限被拒绝,不允许尝试手动更新,因为它似乎是只读的。

检查文件后,权限设置如下:

-rw-r--r-- 1 root wheel 179 Feb 21 2017 /etc/shells

因此,考虑到这一点,在阅读了这篇关于使用 Homebrew 更新 shell 的文章后,我尝试以 root 用户身份启动一个 shell,然后尝试上面的命令,即:

$ sudo -s
$ echo /usr/local/bin/bash >> /etc/shells
$ chsh -s /usr/local/bin/bash
Run Code Online (Sandbox Code Playgroud)

但是,这似乎挂在第一个命令 ( $ sudo -s) 上。这会产生一个bash进程,它占用了大约 70% 的 CPU,并且什么也没有发生。

有没有另一种方法可以更新/etc/shells/文件?

Arm*_*ali 9

添加到仅根文件的一种方法是echo /usr/local/bin/bash | sudo tee -a /etc/shells. – 皮特什


你能解释一下为什么这有效而sudo echo /usr/local/bin/bash >> /etc/shells无效吗。

后者不工作,因为输出重定向>>被(力求做到)由外壳施加之前sudo …被执行,当然用户壳的不具有权限这样做。