Hur byter jag från ett okänt skal till bash?

Jag blev förvånad över att jag inte hittade den här frågan redan på webbplatsen. Så idag kom $ efter att jag loggade in som en ny användare. Detta var oväntat eftersom min huvudanvändares uppmaning börjar med username@computername:~$.

Så hur byter jag från det här annat skal att basa?

Kommentarer

  • Bara för att $ kom upp snarare än username@computername:~$ betyder inte ' t att det inte var ' t bash. Den exakta formateringen av prompten ställs in av PS1-variabeln, som kan ställas in eller anpassas på olika sätt för olika användare.
  • @mouche Re: @frabjous echo $SHELL för att ta reda på vad ditt nuvarande skal är.
  • @mouche @frabjous och att börja med $ är faktiskt vanligt för bash, vissa icke-bash-skal som zsh använder% ur lådan, jag tror att andra skal använder andra saker.
  • @mouche att vara /bin/sh betyder inte ' t så mycket att ' är vanligtvis en symlänk till något annat. Jag ' d typ ls -l /bin/sh för att se vad den ' är en symlänk till. I vissa fall är det en symlänk till något som förändrar dess beteende, jag tror inte ' att bash är så.
  • @xenoterracide – Använd bash som /bin/sh inaktiverar många bash-funktioner (det går till POSIX-efterlevnadsläge).

Svar

Förutsatt att det okända skalet stöder körning av ett absolut kommando kan du försöka: /bin/bash

För att ändra standardskalet skulle jag använda chsh(1). Exempel på användning: chsh -s /bin/bash $USER

Kommentarer

  • Ändrar chsh permanent skalet eller bara för den aktuella sessionen ?
  • @mouche Permanent; det ändrar din post i /etc/passwd
  • @mouche, chsh(1) tillåter bara att ändra till ett skal som är listat i /etc/shells (och är antagligen tillgänglig). chsh -l listar alternativen. Var försiktig, vissa (som nologin) är definierade för konton som aldrig ska användas för att logga in (trevligt sätt att låsa dig ut), det kan finnas lokala tillägg för speciella användningar.

Svar

Du skriver in bash. Om du vill att detta ska vara permanent, ändra standardskalet till /bin/bash genom att redigera /etc/passwd.

Här ”s några utdrag från 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 allra sista fältet innehåller skalet, ändrar fältet efter det sista : till ett giltigt eller ogiltigt skal fungerar. /bin/false och /sbin/nologin betyder båda användaren har inte ett riktigt inloggningsskal, men om pam inte är rätt inställt betyder det inte att de inte kan logga in (jag rapporterade ett fel på detta i Arch Linux, eftersom du kan logga in grafiskt utan att ha ett inloggningsskal). /bin/bash och /bin/zsh är båda giltiga skal, se /etc/shells för en lista med giltiga skal på dina system. Här är min /etc/shells om du är intresserad.

/bin/sh /bin/bash /bin/ksh /bin/zsh /bin/dash 

Ja, du kan använda chsh eller usermod för att göra samma saker, kom ihåg att det bara är strukturerade textfiler och TIMTOWTDI.

Kommentarer

  • Du vill antagligen använda chsh istället för att manuellt redigera passwd
  • @Michael det finns ungefär 5 (POOMA) olika sätt att ändra skalet i /etc/passwd Jag kände inte ' att inte lista någon av dem , för jag gör det alltid manuellt. chsh och usermod kan båda göra det.
  • Att röra sig med konfigurationsfiler är en dålig idé (TM), ett fel kan göra systemet oanvändbart. Ja, det är ofta det enda / snabbaste sättet, men gör det sedan med extrem försiktighet .

Svar

Om chsh eller manuell redigering av konfigurationen kommer inte att fungera, men ett ~ / .profile-skript körs vid inloggning, lägg till den här raden:

exec /bin/bash --login 

Kommentarer

  • Efter att ha tittat runt ett tag var detta den lösning jag behövde. Tack!
  • Bra idé, speciellt om skalet valde källor som arkiverar vid start …
  • touch ~/.bash_profile eller på annat sätt kommer bash att utföra sig i en slinga: bash tar ~/.profile om ~/.bash_profile inte ' finns inte.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *