Jeg var overrasket over at jeg ikke fant dette spørsmålet allerede på siden. Så i dag kom $
opp etter at jeg logget på som en ny bruker. Dette var uventet fordi hovedbrukerens ledelse begynner med username@computername:~$
.
Så hvordan bytter jeg fra dette annet skall å bash?
Kommentarer
Svar
Forutsatt at det ukjente skallet støtter å kjøre en absolutt kommando, kan du prøve: /bin/bash
For å endre standardskallet, bruker jeg chsh(1)
. Eksempel på bruk: chsh -s /bin/bash $USER
Kommentarer
- Endrer chsh skallet permanent eller bare for den nåværende økten ?
- @mouche Permanent; det endrer oppføringen din i
/etc/passwd
- @mouche,
chsh(1)
tillater bare å endre til et skall som er oppført i/etc/shells
(og er antagelig tilgjengelig).chsh -l
viser alternativene. Vær forsiktig, noen (somnologin
) er definert for kontoer som aldri skal brukes til å logge på (fin måte å sperre deg ute), det kan være lokale tillegg for spesiell bruk.
Svar
Du skriver inn bash
. Hvis du vil at dette skal være permanent, endrer du standardskallet til /bin/bash
ved å redigere /etc/passwd
.
Her «s noen utdrag fra /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 aller siste feltet inneholder skallet, og endrer feltet etter det siste :
til et gyldig eller ugyldig skall fungerer. /bin/false
og /sbin/nologin
betyr begge brukeren har ikke et ekte påloggingsskall, selv om pam ikke er satt opp riktig, betyr ikke det at de ikke kan logge inn (jeg rapporterte en feil på dette i Arch Linux, fordi du kan logge på grafisk uten å ha et påloggingsskall). /bin/bash
og /bin/zsh
er begge gyldige skall, se /etc/shells
for en liste over gyldige skall på systemene dine. Her er min /etc/shells
hvis du er interessert.
/bin/sh /bin/bash /bin/ksh /bin/zsh /bin/dash
Ja, du kan bruke chsh
eller usermod
for å gjøre de samme tingene. Husk at dette bare er strukturerte tekstfiler og TIMTOWTDI.
Kommentarer
- Du vil sannsynligvis bruke
chsh
i stedet for å redigerepasswd
- Å rote rundt med konfigurasjonsfiler er en dårlig idé (TM), en feil kan gjøre systemet ubrukelig. Ja, det er ofte den eneste / raskeste måten, men gjør det deretter med ekstrem forsiktighet .
/etc/passwd
Jeg hadde ikke lyst til ' , fordi jeg alltid gjør det manuelt. chsh og usermod kan begge gjøre det.
Svar
Hvis chsh eller manuell redigering av konfigurasjonen vil ikke fungere, men et ~ / .profile-skript kjøres ved pålogging, legg til denne linjen:
exec /bin/bash --login
Kommentarer
- Etter å ha sett meg litt om, var dette løsningen jeg trengte. Takk!
- Flott idé, spesielt hvis skallet valgte kilder som arkiveres ved oppstart …
-
touch ~/.bash_profile
eller ellers vil bash utføre seg i en løkke: bash tar~/.profile
i tilfelle~/.bash_profile
ikke ' t eksisterer.
$
kom opp i stedet forusername@computername:~$
betyr ikke ' t at det ikke var ' t bash. Den eksakte formateringen av ledeteksten er satt av PS1-variabelen, som kan konfigureres eller tilpasses forskjellig for forskjellige brukere.echo $SHELL
for å finne ut hva det nåværende skallet ditt er./bin/sh
betyr ikke ' t mye at ' er vanligvis en symlink til noe annet. Jeg ' d typels -l /bin/sh
for å se hva den ' er en symlink til. I noen tilfeller er det å være en symlink til noe som endrer atferd, ikke ' t tror bash er slik.bash
som/bin/sh
deaktiverer mange bash-funksjoner (den går i POSIX-overholdelsesmodus).