Jeg var overrasket over, at jeg ikke kunne finde dette spørgsmål allerede på siden. Så i dag $
kom efter at jeg var logget ind som en ny bruger. Dette var uventet, fordi min hovedbrugerprompt starter med username@computername:~$
.
Så hvordan skifter jeg fra dette anden shell at bash?
Kommentarer
Svar
Forudsat at den ukendte shell understøtter kørsel af en absolut kommando, kan du prøve: /bin/bash
For at ændre standard shell skal jeg bruge chsh(1)
. Eksempel på brug: chsh -s /bin/bash $USER
Kommentarer
- Ændrer chsh permanent shell eller bare til den aktuelle session ?
- @mouche Permanent; det ændrer din post i
/etc/passwd
- @mouche,
chsh(1)
tillader kun at skifte til en shell, der er anført i/etc/shells
(og er sandsynligvis tilgængelig).chsh -l
viser alternativerne. Vær forsigtig, nogle (somnologin
) er defineret til konti, der aldrig skal bruges til at logge ind (pæn måde at låse dig ud), der kan være lokale tilføjelser til speciel brug.
Svar
Du skriver bash
. Hvis du vil have dette til at være permanent, skal du ændre standardskallen til /bin/bash
ved at redigere /etc/passwd
.
Her “s nogle uddrag fra min /etc/passwd
:
avahi:x:84:84:Avahi daemon:/:/bin/false xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh postgres:x:88:88::/var/lib/postgres:/bin/zsh bob:x:1001:1001::/home/bob:/bin/bash usbmux:x:140:140:usbmux user:/:/sbin/nologin
Det sidste felt indeholder skallen, ændring af feltet efter sidste :
til en gyldig eller ugyldig shell fungerer. /bin/false
og /sbin/nologin
betyder begge brugeren har ikke en rigtig login-shell, selvom hvis pam ikke er konfigureret rigtigt, betyder det ikke, at de ikke kan logge ind (jeg rapporterede en fejl om dette i Arch Linux, fordi du kan logge ind grafisk uden at have en login-shell). /bin/bash
og /bin/zsh
er begge gyldige skaller, se /etc/shells
for en liste over gyldige skaller på dine systemer. Her er min /etc/shells
hvis du er interesseret.
/bin/sh /bin/bash /bin/ksh /bin/zsh /bin/dash
Ja, du kan bruge chsh
eller usermod
for at gøre de samme ting, husk at dette kun er strukturerede tekstfiler og TIMTOWTDI.
Kommentarer
- Du vil sandsynligvis bruge
chsh
i stedet for manuelt at redigerepasswd
- @Michael der er omkring 5 (POOMA) forskellige måder at ændre shell på
/etc/passwd
Jeg havde ikke ' ikke lyst til at angive nogen af dem , fordi jeg altid gør det manuelt. chsh og usermod kan begge gøre det. - At rode med konfigurationsfiler er en dårlig idé (TM), en fejl kan muligvis gøre systemet ubrugeligt. Ja, det er ofte den eneste / hurtigste måde, men gør det derefter med ekstrem omhu .
Svar
Hvis chsh eller manuel redigering af konfigurationen, vil ikke arbejde, men et ~ / .profile-script udføres ved login, tilføj denne linje:
exec /bin/bash --login
Kommentarer
- Efter at have kigget rundt et stykke tid var dette den løsning, jeg havde brug for. Tak!
- God idé, især hvis skallen valgte kilder, der arkiveres ved opstart …
-
touch ~/.bash_profile
eller på anden måde vil bash udføre sig selv i en loop: bash tager~/.profile
i tilfælde af at~/.bash_profile
ikke ' findes ikke.
$
kom frem snarere endusername@computername:~$
betyder ikke ' t, at det ikke var ' t bash. Den nøjagtige formatering af prompten indstilles af PS1-variablen, som kan konfigureres eller tilpasses forskelligt for forskellige brugere.echo $SHELL
for at finde ud af, hvad din nuværende skal er./bin/sh
betyder ofte ikke ', at ' er normalt et symlink til noget andet. Jeg ' d typels -l /bin/sh
for at se, hvad det ' er et symlink til. I nogle tilfælde er det at være et symlink til noget, der ændrer dets adfærd, jeg tror ikke ' at bash er sådan.bash
som/bin/sh
deaktiverer mange bash-funktioner (det går i POSIX-overholdelsestilstand).