システム管理者がログインシェルの変更を拒否するときにbashをログインシェルとして使用する方法

システム管理者がログインシェルの変更を拒否するときにbashをログインシェルとして使用する方法

私が働いているUnixシステム管理者は私のログインシェルをからに変更することはできませんkshbash彼はさまざまな言い訳をしていますが、最も興味深いのは、彼らがすべてのスクリプトを書いたので、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

おすすめ記事