web-dev-qa-db-ja.com

Linuxの特定のTTYnにログインした後、デフォルトのシェルを(永続的に)変更するにはどうすればよいですか?

chshコマンドを使用して、インストールされているシェル間でユーザーのログインシェルを切り替えることは知っていますが、ログイン元の場所(tty1、tty2、ssh、...)の関係なくで機能します。 。私が達成したいのは、例えばtty7からのログインでcsh、例:他のすべてのログインソースではbash

これはまったく実行可能ですか?

4
Anonymous

いいえ、はい。

いいえ、ログインシェルは、ユーザーがログインするTTYではなく、ユーザーに関連付けられています。ユーザーは、特定のログインシェルを1つだけ持つことができます。

はい。ユーザーは、ログインシェルの初期化ファイルで、条件に応じて他のプログラムまたはユーティリティを起動できます。

たとえば、現在のログインシェルとしてbashを使用しているユーザーは、仮想端末7にログインするときに、.bash_profileファイルに次のようなものを追加してcshを実行できます。

case $(tty) in
    */tty7) exec csh -l ;;
esac

exec csh -lは、現在のシェルをログインシェルとして開始されたcshに置き換えます。

10
Kusalananda