
現在 bash を使用していますが、シェルを tcsh に変更したいと考えています。ypchsh を使用し、プロンプトが表示されたらパスワードを入力し、ログイン シェルを /bin/tcsh に変更しました。「[ドメイン] のログイン シェルが変更されました」というメッセージが表示され、うまくいったようです。その後、ログアウトして再度ログインしました。現在のシェルを確認するために echo $0 を実行しましたが、/bin/bash のままであると表示されます。ただし、echo $SHELL を実行すると、/bin/tcsh が表示されます。ps を実行すると、tcsh ではなく bash が実行されていることが示されます。
実行したその他のトラブルシューティング手順: sh や ksh などの別のシェルに切り替えるために同じ手順を試しましたが、うまくいきました。ただし、csh に変更すると、tcsh に変更しようとした場合と同じ結果になります。/etc/shells を確認すると、tcsh がリストされています。exec tcsh も試しましたが、システムはまだ bash を実行しています。
私はこれを学校のアカウントで実行しようとしているので、権限の問題があるかもしれません。ただし、クラスメートの 1 人は自分のアカウントでシェルを変更できました。権限がない場合、設定する必要があるファイルなどはありますか?
[user@machine ~]> echo $0
/bin/bash
[user@machine ~]> echo $SHELL
/bin/tcsh
[user@machine ~]> ypchsh
Changing NIS account information for user on machine
Please enter password:
Changing login shell for user on machine
To accept the default, simply press return. To use the
system's default shell, type the word "none".
Login shell [/bin/tcsh]: /bin/tcsh
The login shell has been changed on machine
[user@machine ~]> logout
[user@machine ~]> echo $0
/bin/bash
[user@machine ~]> echo $SHELL
/bin/tcsh
[user@machine ~]> FOO=BAR
[user@machine ~]> ps
PID TTY TIME CMD
14549 pts/21 00:00:00 bash
14780 pts/21 00:00:00 ps
[user@machine ~]> exec /bin/tcsh
[user@machine ~]> echo $0
/bin/bash
[user@machine ~]> echo $SHELL
/bin/tcsh
[user@machine ~]> FOO=BAR
[user@machine ~]>
[user@machine ~]> uname -a
Linux machine 2.6.32-696.3.2.el6.i686 #1 SMP Tue Jun 20 00:48:23 UTC 2017 i686 i686 i386 GNU/Linux
[user@machine ~]> /bin/ls -ld
drwx--s--x 49 user group 4096 Sep 1 13:08 .
[user@machine ~]> /bin/*sh
/bin/csh: /bin/csh: cannot execute binary file
[user@machine ~]> /usr/bin/*sh
Usage: amuFormat.sh <Card Type> <drive>
<Card Type> has to be defined in amuFormat.sh itself
<drive> has to be defined in mtools.conf
答え1
私のシェルが bash に戻り続け、exec を使用して tcsh に入ることもできない理由は、.cshrc ファイルに次のような行があったためですexec /bin/bash -l
。これを修正するために、その行を削除しました。その時点からシェルを切り替えることができます。