私が働いているUnixシステム管理者は私のログインシェルをからに変更することはできませんksh
。bash
彼はさまざまな言い訳をしていますが、最も興味深いのは、彼らがすべてのスクリプトを書いたので、ksh
私が実行しようとするとうまくいかないということです。その人がこのようなアイデアをどこで得たのかは分かりませんが、彼を説得できないので、他の選択肢があるでしょうか?
(chsh
このコンピュータにインストールされていますが、公開/秘密鍵のペアを使用してログインし、パスワードがないため、パスワードの入力を求められたchsh
ときに提供するものはありません。)
ベストアンサー1
ログインすると、~/.profile
ログインシェル(ksh提供)はこのファイルを読み取ります。ログインシェルをbashに置き換えるように指示できます。取るべきいくつかの予防措置があります。
- ログインシェルが対話型の場合にのみ変更してください。これは重要です。そうしないと、グラフィカルモードでログインすることが機能しなくなる可能性があります(システムによって異なります。
~/.profile
一部のシステム(すべてではありません)はxdmまたは同様の方法でログインすると読み取られます)、このような慣用語はssh foo '. ~/.profile; mycommand'
失敗します。 - 何らかの理由で実行可能ファイルが存在しない場合でも、ログインできるようにbashを使用できることを確認してください。
bashをログインシェルとして実行するかどうかを選択できます。ログインシェルにするときの唯一の主な違いは、またはを~/.bash_profile
ロードすることです~/.profile
。そのため、bashをログインシェルとして実行する場合は、非常に注意するか、または実行しないように~/.bash_profile
注意してください~/.profile
。 ksh~/.profile
だから私はこれをしないことをお勧めします。
また、SHELL
端末エミュレータなどのプログラムがそのシェルを呼び出すように環境変数を bash に設定します。
bashに切り替えるコードは次のとおりです。最後に保存してください~/.profile
。
case $- in
*i*)
# Interactive session. Try switching to bash.
if [ -z "$BASH" ]; then # do nothing if running under bash already
bash=$(command -v bash)
if [ -x "$bash" ]; then
export SHELL="$bash"
exec "$bash"
fi
fi
esac