ssh 経由のリモート コマンドのデフォルト シェル

ssh 経由のリモート コマンドのデフォルト シェル

私のUbuntu 10.04ボックスには次のような設定があります

~$ echo $SHELL
/bin/bash
~$ grep $USER /etc/passwd
ubuntu:x:1000:1000:Ubuntu,,,:/home/ubuntu:/bin/bash

ただし、リモート コマンドを実行すると、zsh がデフォルトのシェルになるようです。

$> ssh -i /path/to/ssh/key ubuntu@<my-host> "echo $SHELL"
/bin/zsh

これを修正するにはどうすればいいでしょうか?

答え1

そこに表示されているのは、ローカル ログイン シェルです。

ssh user@host "echo $SHELL"

上記では、$SHELLは二重引用符で囲まれているため、 ssh が実行される前に展開されます。そのため、リモート側ではecho /bin/zshの代わりにが実行されますecho $SHELL

ローカルで展開されないようにするには、一重引用符を使用します$SHELL

ssh user@host 'echo "$SHELL"'

見るバッシュFAQ96詳細については、こちらをご覧ください。

答え2

あなたまたは他の誰かがリモート ホストを で設定している必要がありますzsh。bash に戻すには、次を使用します。

chsh -s /bin/bash

リモートホスト上で。

余談ですが、zshこれは非常に便利な機能がたくさんある素晴らしいシェルなのでお勧めします。これを有効にしてもbashが使えなくなるわけではありません。

#!/bin/sh 

スクリプトは引き続き bash で実行されます。

答え3

~/.bash_profileログイン シェルと非ログイン シェルについて調べてください。 、、~/.bashrcまたはで何かおかしなことをしているのではないかと思いますので~/.profile、これらの内容を調べて、これを実行するような何かがないか確認してください。

関連情報