GNU/Linux >> Linux の 問題 >  >> Linux

システム管理者がBashの変更を拒否した場合、Bashをログインシェルとして使用するにはどうすればよいですか?

私が働いているUNIXのシステム管理者は、ログインシェルをkshから変更するためのアクセス権を私に与えることに消極的です。 bashへ 。彼はさまざまな言い訳をしましたが、最も面白いのは、kshのすべてのスクリプトを書いているからです。 私がそれらを実行しようとすると、それらは機能しません。彼がこれらのアイデアをどこで得ているのかはわかりませんが、彼を納得させることができないので、私が持っている代替案はありますか?

chsh はこれらのマシンにインストールされていますが、ログインにはパブリック/プライベートキーペアを使用しており、パスワードを持っていないため、chsh パスワードの入力を求められます。パスワードを指定する必要はありません。 )

承認された回答:

ログインすると、ファイル~/.profile ログインシェル(ksh)によって読み取られます。そのログインシェルに、それ自体をbashに置き換えるように指示できます。いくつかの予防策を講じる必要があります:

  • ログインシェルは、インタラクティブな場合にのみ交換してください。これは重要です。そうしないと、グラフィックモードでのログインが機能しない場合があります(これはシステムに依存します。すべてではありませんが、一部のシステムは~/.profileを読み取ります。 xdmなどを介してログインする場合)、およびssh foo '. ~/.profile; mycommand' 失敗します。
  • bashが使用可能であることを確認して、何らかの理由で実行可能ファイルが存在しない場合でもログインできるようにします。

ログインシェルとしてbashを実行するかどうかを選択できます。ログインシェルにすることの唯一の大きな違いは、~/.bash_profileをロードすることです。 または~/.profile 。したがって、ログインシェルとしてbashを実行する場合は、~/.bash_profileを使用するように十分に注意してください。 または、~/.profileからbashを再帰的に実行しないように注意してください 。 ~/.profileを持つことの本当の利点はありません kshではなくbashによって実行されるため、実行しないことをお勧めします。

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

Linux
  1. LinuxBashシェルスクリプトで暗号化されたパスワードを使用する方法

  2. CentOS / RHEL :ユーザーのログイン シェルを変更する方法

  3. Linux でデフォルトのシェルを変更する方法

  1. cronシェルを変更する方法(shからBash)?

  2. bash スクリプトが .NET でソースされたときに、インストールされているディレクトリをどのように知ることができますか。オペレーター?

  3. Debian VM の Bash の解像度を変更するにはどうすればよいですか?

  1. Unix シェルのヒント:ログイン シェルを Bash からその他に変更する

  2. Linux でデフォルトのシェルを変更する方法

  3. 使用している Fedora のバージョンを確認するにはどうすればよいですか?