我正在尝试更新我的/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
文件?
答案 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)