Hvordan bytter jeg fra et ukjent skall til bash?

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

  • Bare fordi $ kom opp i stedet for username@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.
  • @mouche Re: @frabjous echo $SHELL for å finne ut hva det nåværende skallet ditt er.
  • @mouche @frabjous og begynner med en $ er faktisk vanlig for bash, noen ikke-bash-skjell som zsh bruker% ut av esken, jeg tror andre skjell bruker andre ting.
  • @mouche å være /bin/sh betyr ikke ' t mye at ' er vanligvis en symlink til noe annet. Jeg ' d type ls -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.
  • @xenoterracide – Bruk bash som /bin/sh deaktiverer mange bash-funksjoner (den går i POSIX-overholdelsesmodus).

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 (som nologin) 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 å redigere passwd
  • @Michael det er omtrent 5 (POOMA) forskjellige måter å endre skallet på /etc/passwd Jeg hadde ikke lyst til ' , fordi jeg alltid gjør det manuelt. chsh og usermod kan begge gjøre det.
  • Å 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 .

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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *