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

时间:2018-03-01 11:27:36

标签: bash macos shell homebrew

我正在尝试更新我的/etc/shells文件,以包含位于bash的{​​{1}}的自制软件安装版本的路径

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

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

$ sudo echo /usr/local/bin/bash >> /etc/shells

所以,考虑到这一点,并在看了article关于使用Homebrew更新你的shell 之后,我尝试以root用户身份启动shell,然后尝试上面的命令,即:

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

然而,这似乎挂在第一个命令($ sudo -s $ echo /usr/local/bin/bash >> /etc/shells $ chsh -s /usr/local/bin/bash )上。这会产生$ sudo -s进程,占用大约70%的CPU并且没有任何反应。

有没有其他方法可以更新bash文件?

2 个答案:

答案 0 :(得分:2)

  

添加到仅限root文件的方法是echo /usr/local/bin/bash | sudo tee -a /etc/shells。                        - Petesh

  

您是否能够解释为什么会起作用,而sudo echo /usr/local/bin/bash >> /etc/shells却没有。

后者不起作用,因为在执行>>之前,shell 已经(尝试)应用了输出重定向sudo …,当然还有用户shell无权这样做。

答案 1 :(得分:0)

或者您也可以使用它(我必须在macOS Mojave上执行此操作):

sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)