这个作品
$ 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
请您参考如下方法:
sudo
将字符串作为完整命令。您应该使用 shell 程序来解释您的命令,如下所示:
sudo sh -c 'echo /usr/local/bin/zsh >> /etc/shells'
这将以root特权执行
sh
,并且
sh
将字符串解释为包含
>>
作为输出重定向的shell命令。