
Ich bin derzeit in Bash, möchte aber meine Shell auf Tcsh ändern. Ich habe ypchsh verwendet, mein Passwort eingegeben, als ich dazu aufgefordert wurde, und dann die Login-Shell auf /bin/tcsh geändert. Und es schien zu funktionieren, denn ich bekomme die Meldung „Die Login-Shell wurde auf [Domäne] geändert“. Dann habe ich mich abgemeldet und wieder angemeldet. Ich habe echo $0 ausgeführt, um meine aktuelle Shell zu überprüfen, aber es heißt, ich bin immer noch in /bin/bash. Wenn ich jedoch echo $SHELL ausführe, erhalte ich /bin/tcsh. Und wenn ich ps ausführe, wird angezeigt, dass Bash statt Tcsh ausgeführt wird.
Weitere Schritte zur Fehlerbehebung: Habe versucht, mit denselben Schritten zu anderen Shells wie sh und ksh zu wechseln, was funktioniert. Der Wechsel zu csh führt jedoch zum selben Ergebnis wie der Versuch, zu tcsh zu wechseln. Habe /etc/shells geprüft und tcsh ist aufgeführt. Ich habe auch versucht, tcsh auszuführen, aber das System führt immer noch bash aus.
Ich versuche dies mit einem Schulkonto, also gibt es vielleicht ein Berechtigungsproblem. Einer meiner Klassenkameraden konnte jedoch sein Konto dazu bringen, die Shell zu ändern. Wenn keine Berechtigung vorliegt, gibt es eine Datei, die ich konfigurieren muss?
[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
Antwort1
Der Grund, warum meine Shell immer wieder zu Bash zurückkehrt und mich sogar daran hindert, mit Exec in Tcsh zu gelangen, war, dass in der .cshrc-Datei eine Zeile mit folgendem Inhalt stand exec /bin/bash -l
. Um das zu beheben, habe ich diese Zeile entfernt und von diesem Punkt an kann ich die Shell wechseln.