
私の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
、これらの内容を調べて、これを実行するような何かがないか確認してください。