web-dev-qa-db-ja.com

chshにも/ etc / passwdにもアクセスできない場合、デフォルトのシェルをbashに変更するにはどうすればよいですか?

私は大学のリモートLinuxアカウントで作業しています。デフォルトのシェルは残念ながらcshで、タブ補完はありません。アカウントのデフォルトのシェルをbashに変更するにはどうすればよいですか? chshは利用できません。

8
mcandre

おそらく、システム管理者にデフォルトのシェルを変更できるかどうかを尋ねてみてください。 (私が大学にいたときのように)彼らができない、またはできない場合、私が使用した回避策は追加することでした

# Exec bash if using an interactive Shell.
if ($?prompt) then
    setenv Shell /path/to/bash
    exec $Shell
endif

.cshrcに。 (もちろん、/path/to/bashを実際のパスに置き換えるようにしてください。システムが提供するバージョンが古すぎて好みに合わない場合は、ホームディレクトリの下にあるbashのバージョンである可能性もあります。 。)効率を上げるには、.cshrcのできるだけ早い段階でこれを実行することをお勧めします。これにより、bashcshプロセスを置き換えると無効になる追加の.cshrc処理を回避できます。

11
jjlin

あなたは単に接続することができます

ssh -t yourhost bash

ログイン時にBashシェルを自動的に実行します。


以下のコメントから、あなたは代替案を見ることができます

ssh -t yourhost exec bash

execは新しいプロセスを実行して古いプロセスを終了するため、cshプロセスは直接終了します。

追加する場合-l Bashへの引数としてのコマンドの最後では、ログインシェルとして扱われますが、おそらくそれは必要ありません。

3

私が見つけた最良の解決策は、stackexchangeで1つ以上でした。ここにリンクがあります stackexchange そしてここに解決策があります:

ホームディレクトリに.profileファイルを作成し、以下に貼り付けます。既にある場合は、.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
0
MattC

pAM経由でLDAP認証を使用しているときによく検索しましたが、最善の解決策は、ユーザーのホームディレクトリの.profileファイルにShell =/bin/bash exec/bin/bashを配置することだと思います。

0
user454581