回答:
スーパーユーザーとして対話型シェルを実行する別の方法はsudo -s、シェルとして使用する$SHELLです。
他の回答のコメントで述べたように、su -s /path/to/zshOS X では機能しません。
OS Xはログインシェルの変更もサポートしていません/etc/passwdが、以下を使用できますdscl。
$ dscl . -read /Users/root UserShell
/bin/sh
$ sudo dscl . -change /Users/root UserShell /bin/sh /bin/zsh
$ dscl . -read /Users/root UserShell
/bin/zsh
$ sudo su
My-iMac# echo $0
zsh
My-iMac# exit
$ sudo dscl . -change /Users/root UserShell /bin/zsh /bin/sh
$
/bin/shほとんどのプラットフォームでは、Bourneシェルではなくなりました。これは、OS Xではbash、UbuntuではdashのPOSIX準拠バージョンです。
sumanページ、あなたはこれを実現することができる2つの方法があります。
最初の方法は、-sor --shellフラグ(suこの引数をサポートするバージョンの* NIXベースのOSを使用していると想定)を使用し、その後に任意のシェルへのパスを指定することです。渡されたシェルが見つからない場合、su次のメソッドに戻り、失敗すると、の呼び出しが試行され/bin/shます。
たとえば、次のように強制的suに起動することができますzsh(それがに存在する場合/bin/zsh)。
sudo su --shell /bin/zsh
2番目の方法は、rootユーザーに指定されたデフォルトのシェルを変更することです(注意してください)。これを行うには、ファイル/etc/passwdを編集して、rootユーザーに指定されたシェルを変更します。デフォルトで指定されているシェルを確認するには、次のコマンドを実行します(スーパーユーザーがrootであると想定)。
sudo grep root /etc/passwd
コマンドはのようなものを出力するはずroot:x:0:0:root:/root:/bin/bashです。代わり/bin/bashにポイントするように(またはシステムに設定されているものを)変更するだけzshです。
sudo su -s /bin/zsh(またはを使用中--shell)はを返しますsu: illegal option -- s。OS X 10.8.4を使用しています。OS Xは別のコマンドを使用しますか?
cat /etc/shells何ですか?技術的には、そのファイルで許可されているシェルのみが起動されますが、suマンページではsu、rootで呼び出されても問題はないと述べています:S
cat /etc/shells/bin/zsh受け入れ可能なシェルとして戻ります。
で簡単に行うことができますchpass:
$ sudo chpass -s /bin/zsh