私が働いている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
答え2
bash
これは少し面倒ですが、ホームディレクトリに以下を含むファイルを作成し、ログインに使用するシェルにすることができます。.profile
SHELL=`type -P bash`
exec bash -l
ksh
その後、セッションはセッションに置き換えられますbash
。ログインするたびに手動で新しいセッションを開始するのと同じように、exit
2回入力する必要はありません。その後、入力^D
bash
echo $SHELL
パスも返されますbash
。
答え3
Gilesの答えbashを実行するときは、-lフラグを追加して、すべてのログインプロファイルスクリプトを新しいbashシェルで起動する必要があります。 (例:RHELの/etc/profile.d/の内容)これで、スクリプトは次のようになります。
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" -l
fi
fi
esac
答え4
ソラリス:
usermod -s /bin/bash root