2017-12-03 14 views
2

に追加しようとしているこの1つはMacのターミナル:の/ etc /シェル

$ 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 

に動作します。しかし、この1はしません:

sudo -s 'echo /usr/local/bin/zsh >> /etc/shells' 
/bin/bash: echo /usr/local/bin/zsh >> /etc/shells: No such file or directory 

答えて

2

sudoは完全なコマンドとして文字列を取ります。あなたはこのようなあなたのコマンドを解釈するためにシェルを使用する必要があります。

sudo sh -c 'echo /usr/local/bin/zsh >> /etc/shells' 

これは、root権限を持つshを実行し、shは、出力のリダイレクトなど>>含むシェルコマンドとして文字列を解釈します。

1

あなたが本当に必要とするのはsudoです。保護されたファイルを書き込むためだけです。 teeコマンドを使用してファイルに追加することができます。

echo /usr/local/bin/zsh | sudo tee -a /etc/shells > /dev/null 
関連する問題