ypchsh ändert sich nicht zu einigen Muscheln

649
Alice

Ich bin momentan in bash, möchte aber meine Shell in tcsh ändern. Ich habe ypchsh verwendet, mein Passwort eingegeben, wenn Sie dazu aufgefordert wurden, und dann die Login-Shell in / bin / tcsh geändert. Es schien, als ob es funktioniert hat, weil ich eine Nachricht bekomme, die besagt "Die Login-Shell wurde auf [Domäne] geändert". Dann habe ich mich abgemeldet und wieder angemeldet. Ich habe $ 0 überprüft, um meine aktuelle Shell zu überprüfen, aber es wird angezeigt, dass ich immer noch in / bin / bash bin. Wenn ich jedoch $ SHELL echo, bekomme ich / bin / tcsh. Und wenn ich ps mache, zeigt es, dass bash anstelle von tcsh läuft.

Andere Schritte zur Fehlerbehebung: Die gleichen Schritte unternommen, um zu anderen Shells wie sh und ksh zu wechseln, was funktioniert. Wenn ich zu csh wechsle, habe ich dasselbe Ergebnis wie beim Versuch, zu tcsh zu wechseln. Geprüfte / etc / shells und tcsh werden aufgelistet. Ich habe auch exec tcsh ausprobiert, aber das System läuft immer noch bash.

Ich versuche, dies auf einem Schulkonto zu tun, daher gibt es möglicherweise ein Erlaubnisproblem. Obwohl einer meiner Klassenkameraden sein Konto wechseln konnte, um die Shell zu wechseln. Wenn nicht die Erlaubnis 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 
2
Sie machen alle diese sekundären Schritte, um zu sehen, welche Shell Sie ausführen - was sagen die verdammten Beweise aus? Was passiert, wenn Sie `FOO = BAR` eingeben? Welche Shell laufen Sie wirklich? Und im Ernst? Sie haben `exec tcsh` ausprobiert und sind noch in der Bash? Ich habe das Gefühl, dass Sie uns nicht die ganze Geschichte erzählen. Scott vor 7 Jahren 0
@ Scott Ich kenne mich mit den Linux-Systemen nicht aus. Können Sie mir erklären, wie ich die "primären Beweise" finden kann und was Sie meinen, wenn Sie FOO = BAR eingeben? Ich habe auch eine Geschichte meiner Befehle gepostet. Alice vor 7 Jahren 0
(0) Vielen Dank, dass Sie das Update zur Verfügung gestellt haben. Es wäre jedoch klarer, wenn Sie die Zeichen ">" löschen und "$" vor den Shell-Befehlen einfügen. Es ist am besten, wenn Sie von Ihrem Terminal kopieren und in Super User einfügen. (Natürlich ist es in Ordnung, sensible Informationen wie Ihren Benutzernamen und den Computernamen zu ändern.) Wenn sich jedoch die Eingabeaufforderung der Shell ändert, zeigen Sie das. (1) Sie sagen, Sie sind mit den Linux-Systemen nicht sehr vertraut. Ich muss mich fragen, wie viel Sie über die \ * nix-Shells verstehen und warum Sie Ihre ändern möchten. (2) Wenn ich "FOO = BAR" sage, meine ich "FOO = BAR" (gefolgt von Enter) an der Shell-Eingabeaufforderung. Scott vor 7 Jahren 0
Ich habe aktualisiert und eingefügt, was ich im Terminal gemacht habe. Versuchte FOO = BAR, aber es scheint nicht so zu sein, als hätte es etwas getan. Ich weiß nichts über Nix-Shells und ich muss in tcsh sein, da die Übungen im Unterricht in tcsh gemacht werden und es einfacher wäre zu folgen, wenn meine Shell die gleiche ist. Alice vor 7 Jahren 0
Ah, aber Sie müssen es nicht einfach zu Ihrer _primary_-Shell machen, oder? Jede Shell kann einfach von jeder anderen Shell wie ein normales Programm gestartet werden. grawity vor 7 Jahren 0
(1) Vielen Dank, dass Sie Ihre Situation geklärt haben (warum Sie tcsh verwenden möchten / müssen). Aber Grawity ist richtig - wenn Sie nur etwas in tcsh machen müssen, ändern Sie nicht die Shells (mit chsh); Führen Sie einfach tcsh aus. (2) Vielen Dank, dass Sie Ihren Sitzungsbericht aktualisiert haben (zeigt die Eingabeaufforderungen der Shell und versucht "FOO = BAR"). Du kommst in eine heikle Gegend - `` echo "$ 0" ``, `` echo "$ SHELL" `` und `ps 'sind alles, wie ich sagte, sekundäre Beweise - sie können irreführende Antworten geben. Die Tatsache, dass "FOO = BAR" scheinbar nichts tut, ist für ein Mitglied der Bourne-Shell-Familie (sh, bash, ksh) normal. … (Fortsetzung) Scott vor 7 Jahren 0
(Fortsetzung)… Wenn Sie sich in einem Mitglied der C-Shell-Familie befanden (csh und tcsh), würden Sie mit 'FOO = BAR' eine Fehlermeldung erhalten. (3) Die Tatsache, dass Ihre Shell-Eingabeaufforderung sich nicht ändert, und "FOO = BAR" zeigt keine Fehlermeldung an, nachdem Sie tcsh (versucht haben) auszuführen, dass dies kein ypchsh-Problem ist ist ein tcsh problem. Es ist ein Chaos; Das sieht nicht nach einem gewöhnlichen Problem aus (dh es ist ungewöhnlich). Wenn Sie dieses Problem hier weiter verfolgen wollen, müssen Sie uns weitere Informationen geben. Zum Beispiel: Wie ist die Gesamtkonfiguration? Ich meine, Sie (dh Sie und Ihre Klassenkameraden)… (Fortsetzung) Scott vor 7 Jahren 0
(Fortsetzung)… Lassen Sie auf einzelnen PCs eine Form von Unix laufen (und diese PCs befinden sich in einem Netzwerk, das YP / NIS oder NIS + verwendet), und Ihr Problem ist * auf * Ihrem individuellen PC? Hat Ihr Klassenkamerad versucht, sich an Ihrem PC anzumelden, oder umgekehrt? Oder verwenden Sie ssh, PuTTY oder etwas Ähnliches, um sich von einem PC an einem entfernten / zentralen Computer anzumelden, auf dem Unix ausgeführt wird? Oder etwas anderes (z. B. Verwendung von Terminals, um sich an einem entfernten / zentralen Computer anzumelden)? In jedem Fall könnte es uns helfen, wenn Sie die folgenden Befehle ausführen und die Ausgabe melden: `uname -a`,… (Fortsetzung) Scott vor 7 Jahren 0
(Fortsetzung)… `` / bin / ls -ld / bin / * sh / usr / bin / * sh | grep -v '\ .sh $' ``, `ls -l / proc / $$` und `cat / proc / $$ / cmdline && echo`. Diese Informationen geben uns möglicherweise genügend Informationen, um Ihnen eine Antwort zu geben, oder schlagen einfach weitere Fragen vor. Es tut uns leid; Ich kann dir keine Garantie geben. (4) Da ich nicht garantieren kann, dass wir Ihre Frage beantworten können, sollten Sie Ihren Ausbilder oder Ihren lokalen Systemadministrator um Hilfe bitten. Scott vor 7 Jahren 0
@grawity Ich habe exec / bin / tcsh ausprobiert und den FOO = BAR-Test durchgeführt, aber es ist nichts passiert, wie in der Befehlsübersicht gezeigt. Alice vor 7 Jahren 0
@Scott Ich habe das ausprobiert, was ich auf dem Post ursprünglich auf einer CentOS-Maschine getan habe, die nicht funktioniert hat. Und dann habe ich versucht, die Schritte auf der Maschine auszuführen, die mein Freund zur Arbeit bekam, und auf einer anderen Maschine, aber keiner hat funktioniert. Es könnte sich also um ein Kontoproblem handeln. Ich habe nur die Schritte versucht, die Sie auf einem Terminal durch PuTTY vorgeschlagen haben. Ich gebe die Ergebnisse für / bin / ls -ld und ... / bin / * sh weiter oben, aber die anderen, die ich beunruhige, könnten zu schwelend sein, um sie öffentlich zu posten. Es gibt etwas, wonach Sie in diesen Ergebnissen suchen. Und wie finde ich das Gesamtsetup und so? Alice vor 7 Jahren 0
(1) `/ bin / ls -ld / bin / * sh / usr / bin / * sh | grep -v '\ .sh $' `ist alles ein Befehl. Ich möchte Sie bitten, diesen Befehl auszuführen, um zu sehen, ob `/ bin / tcsh` ein Link zu` / bin / bash` auf Ihrem System ist, denn das würde erklären, was Sie sehen. (Wenn `/ bin / tcsh` klein ist - weniger als 1000 Bytes -, wäre das auch eine rote Flagge.) (2) Ich habe nach dem` uname -a` gefragt, weil uns das möglicherweise in die Richtung der Suche führt. (3) `cat / proc / $$ / cmdline` könnte uns Hinweise geben, wie die Shell aufgerufen wird. … (Fortsetzung) Scott vor 7 Jahren 0
(Fortsetzung)… `ls -l / proc / $$` sagt uns, was Sie in `/ proc` haben, was uns möglicherweise nützliche Informationen geben kann. (4) Mit "Gesamtsetup" meine ich Sachen, die so offensichtlich sind, dass Sie sich nicht die Mühe machen, es zu erwähnen: Verwenden Sie alle denselben Rechner (aus der Ferne) oder verwenden Sie einzelne Unix / Linux-PCs und anderes logistisches Material, das Ihnen wahrscheinlich am ersten Unterrichtstag (oder gegebenenfalls der ersten Übungseinheit) erklärt worden wäre. Ich glaube, ich habe das in meinem Kommentar (vor 7 Stunden) erklärt. Scott vor 7 Jahren 0
@Scott Ich habe herausgefunden, warum es immer wieder zu Bash geht! Ich verglich meine .cshrc-Datei mit der meines Freundes und sah, dass ich dort "exec / bin / bash -l" hatte und er nicht. Ich bin nicht sicher, was ich getan habe, aber ich habe es entfernt und ich kann jetzt in tcsh einsteigen. Ich habe mit FOO = BAR nachgesehen und einen Fehler erhalten, der jetzt funktioniert. Vielen Dank für Ihre Zeit und ausführliche Erklärungen! Alice vor 7 Jahren 0
Ah; Im Nachhinein offensichtlich, aber ich hätte das nie gedacht. Danke, dass Sie mich aktualisiert haben. Sie können Ihre Entdeckung mit mehr Personen teilen, indem Sie sie als Antwort posten. Scott vor 7 Jahren 0

1 Antwort auf die Frage

0
Alice

Der Grund, warum meine Shell immer wieder zu bash zurückkehrt und mich sogar daran hindert, exec für tcsh zu verwenden, war, weil in der .cshrc-Datei eine Zeile stand, die darin steht exec /bin/bash -l. Um dies zu beheben, entfernte ich diese Linie und kann von diesem Punkt an die Muscheln wechseln.