这个有效
$ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
但是这个没有:
sudo -s 'echo /usr/local/bin/zsh >> /etc/shells'
/bin/bash: echo /usr/local/bin/zsh >> /etc/shells: No such file or directory
答案 0 :(得分:3)
sudo
将字符串作为完整命令。您应该使用shell来解释您的命令:
sudo sh -c 'echo /usr/local/bin/zsh >> /etc/shells'
使用root权限执行sh
,sh
将字符串解释为包含>>
作为输出重定向的shell命令。
答案 1 :(得分:1)
您真正需要sudo
的唯一方法是打开受保护的文件进行写入。您可以使用tee
命令附加到文件。
echo /usr/local/bin/zsh | sudo tee -a /etc/shells > /dev/null