Dies ist eine gute Frage, die jedoch möglicherweise besser für die Linux-QS-Site geeignet ist.
BradleyDotNET
6
Setze
Antworten:
413
Versuchen Sie den Linux-Befehl chsh .
Der detaillierte Befehl lautet chsh -s /bin/bash. Sie werden aufgefordert, Ihr Passwort einzugeben. Ihre Standard-Login-Shell ist /bin/bashjetzt. Sie müssen sich abmelden und wieder anmelden, um diese Änderung zu sehen.
Folgendes wird aus der Manpage zitiert:
Der Befehl chsh ändert die Benutzeranmeldeshell. Dies bestimmt den Namen des anfänglichen Anmeldebefehls des Benutzers. Ein normaler Benutzer kann die Anmeldeshell nur für sein eigenes Konto ändern, der Superuser kann die Anmeldeshell für jedes Konto ändern
Dieser Befehl ändert die Standard-Anmeldeshell dauerhaft.
Hinweis: Wenn Ihr Benutzerkonto remote ist, z. B. bei der Kerberos-Authentifizierung (z. B. Enterprise RHEL), können Sie es nicht verwenden chsh.
chsh: can only change local entries; use ypchsh instead. Dann hat ypchsh keine -sOption
Mahmood
10
@ShaktiMalik Ich glaube, die Konfigurationsdatei ist /etc/passwd, aber ich habe sie nicht überprüft.
Summer_More_More_Tea
30
Sie müssen sich abmelden und wieder anmelden, um diese Änderung zu sehen.
Neil Traft
22
In meinem Fall hatte ich Root-Zugriff, wollte mich aber nicht mit Konfigurationen auf dem tatsächlichen Host herumschlagen. Ich habe exec /bin/bashzu ~/.profileund dies erlaubte mir , ohne dass Änderungen an den Server direkt zu bash einzuloggen. (Die ursprüngliche Standard-Shell war nur /bin/sh)
Paul Nelson Baker
2
@BCqrstoO Danke dafür. Aber was ist, wenn Sie exitBash eingeben? Werden Sie den Server direkt abmelden oder einfach die Bash beenden und in den sh und einen anderen exit, der zum Abmelden des Servers erforderlich ist?
Summer_More_More_Tea
148
Sie können die passwd-Datei direkt für den jeweiligen Benutzer ändern oder den folgenden Befehl verwenden
Wahrscheinlich eine gute Idee, es zu versuchen, which bashbevor Sie den obigen Befehl aufrufen. Ihr Kilometerstand kann je nach Standort variieren. In meinem Fall wurde es in/bin/bash
Martin Haeberli
Ich kann auch hinzufügen, dass der chshBefehl Teil des util-linuxPakets ist. und chsh -s $(which bash) $USERsollte das gleiche wie oben ergeben.
Es gibt auch die -lOption: "Liste der Muscheln drucken".
Betlista
3
es war chsh -s /bin/bash usernamefür mich
Salvatorelab
Vielen Dank! Dies half mir beim Versuch, es für einen anderen Benutzer zu ändern
Tobias Feil
18
Sie sollten /etcwahrscheinlich irgendwo ein 'Skelett' /etc/skeletonhaben oder wahrscheinlich die Standardeinstellungen überprüfen/etc/default oder so. Dies sind Skripte, die Standardumgebungsvariablen definieren, die während einer Anmeldung festgelegt werden.
Wenn es nur für Ihr eigenes Konto ist: Überprüfen Sie die (versteckte) Datei ~/.profileund ~/.login. Oder generieren Sie sie, wenn sie nicht existieren. Diese werden auch beim Anmeldevorgang ausgewertet.
Plus 1 für die gezielte Beantwortung der Frage (THE Default Shell). Unter Red Hat Linux wird es in/etc/default/useradd
geedoubleya
@geedoubleya Können Sie angeben, was ein Unterschied zwischen Standard- und Anmeldeshell ist?
Betlista
1
Hi @Betlista Die Standard-Shell ist die Shell, die für eine Anmelde-Shell für neue Benutzer verwendet wird, wenn diese erstellt werden, es sei denn, eine bestimmte Shell wird als Argument angegeben.
Antworten:
Versuchen Sie den Linux-Befehl
chsh
.Der detaillierte Befehl lautet
chsh -s /bin/bash
. Sie werden aufgefordert, Ihr Passwort einzugeben. Ihre Standard-Login-Shell ist/bin/bash
jetzt. Sie müssen sich abmelden und wieder anmelden, um diese Änderung zu sehen.Folgendes wird aus der Manpage zitiert:
Dieser Befehl ändert die Standard-Anmeldeshell dauerhaft.
Hinweis: Wenn Ihr Benutzerkonto remote ist, z. B. bei der Kerberos-Authentifizierung (z. B. Enterprise RHEL), können Sie es nicht verwenden
chsh
.quelle
chsh: can only change local entries; use ypchsh instead
. Dann hat ypchsh keine-s
Option/etc/passwd
, aber ich habe sie nicht überprüft.exec /bin/bash
zu~/.profile
und dies erlaubte mir , ohne dass Änderungen an den Server direkt zu bash einzuloggen. (Die ursprüngliche Standard-Shell war nur/bin/sh
)exit
Bash eingeben? Werden Sie den Server direkt abmelden oder einfach die Bash beenden und in den sh und einen anderenexit
, der zum Abmelden des Servers erforderlich ist?Sie können die passwd-Datei direkt für den jeweiligen Benutzer ändern oder den folgenden Befehl verwenden
Dann abmelden und einloggen
quelle
which bash
bevor Sie den obigen Befehl aufrufen. Ihr Kilometerstand kann je nach Standort variieren. In meinem Fall wurde es in/bin/bash
chsh
Befehl Teil desutil-linux
Pakets ist. undchsh -s $(which bash) $USER
sollte das gleiche wie oben ergeben.-l
Option: "Liste der Muscheln drucken".chsh -s /bin/bash username
für michSie sollten
/etc
wahrscheinlich irgendwo ein 'Skelett'/etc/skeleton
haben oder wahrscheinlich die Standardeinstellungen überprüfen/etc/default
oder so. Dies sind Skripte, die Standardumgebungsvariablen definieren, die während einer Anmeldung festgelegt werden.Wenn es nur für Ihr eigenes Konto ist: Überprüfen Sie die (versteckte) Datei
~/.profile
und~/.login
. Oder generieren Sie sie, wenn sie nicht existieren. Diese werden auch beim Anmeldevorgang ausgewertet.quelle
/etc/default/useradd