Hvordan skifter jeg fra en ukendt skal til bash?

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

  • Bare fordi $ kom frem snarere end username@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.
  • @mouche Re: @frabjous echo $SHELL for at finde ud af, hvad din nuværende skal er.
  • @mouche @frabjous og begynder med en $ er faktisk almindelig for bash, nogle ikke-bash-skaller som zsh bruger% ud af kassen, jeg tror andre skaller bruger andre ting.
  • @mouche at være /bin/sh betyder ofte ikke ', at ' er normalt et symlink til noget andet. Jeg ' d type ls -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.
  • @xenoterracide – Brug af bash som /bin/sh deaktiverer mange bash-funktioner (det går i POSIX-overholdelsestilstand).

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 (som nologin) 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 redigere passwd
  • @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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *