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


8

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


1
大学はアカウントを保存するためにどのようなシステムを使用していますか?ldapmodifyうまくいくかもしれません。
user1686 2012

または、NISを使用している場合はypchsh、適切なコマンドである必要があります。
m000 2012

タブ補完だけが必要な場合は、これらを〜/ .cshrc set filecとに追加できます set autolist
Hennes

回答:


11

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

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

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


これは私の大学ではうまくいきませんでした。私はおそらくシステム管理者と話をしなければならないでしょう。
2rs2ts 2013年

3

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

ssh -t yourhost bash

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


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

ssh -t yourhost exec bash

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

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


1
ssh -t yourhost exec -a bash -l bash最初のシェル内でプロセスとして実行するのではなく、元のシェルを完全に置き換える。
chepner 2012

@chepner:おもしろい、私ssh -t host bashも同じような状況で自分で簡単な解決策を使っていますが、あなたのやり方はより良いです。まったく考えていませんexec、ありがとう!私はあなたの提案で投稿を更新します。
Daniel Andersson、2012

しかし、bash組み込みのコマンドに引数を使用することで、少しおかしくなりましたexec
chepner 2012

@chepner:はいああ、私はデフォルトのシェルとしてzshの持つホスト上で、今それを試してみましたが、それは両方で失敗-aして-l。回答の例を変更します。
Daniel Andersson

0

私が見つけた最良の解決策は、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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.