Hoe schakel ik over van een onbekende shell naar bash?

Ik was verrast dat ik deze vraag niet al op de site had gevonden. Dus vandaag $ kwam nadat ik me had aangemeld als een nieuwe gebruiker. Dit was onverwacht omdat de prompt van mijn hoofdgebruiker begint met username@computername:~$.

Dus, hoe schakel ik hier over andere shell om te bash?

Reacties

  • Gewoon omdat $ opkwam in plaats van username@computername:~$ betekent niet ' dat het niet ' t bash was. De exacte opmaak van de prompt wordt bepaald door de PS1-variabele, die voor verschillende gebruikers anders kan worden ingesteld of aangepast.
  • @mouche Re: @frabjous echo $SHELL om erachter te komen wat je huidige shell is.
  • @mouche @frabjous en beginnen met een $ is eigenlijk gebruikelijk voor bash, sommige niet-bash-shells zoals zsh gebruiken de% uit de doos, ik geloof dat andere shells gebruiken andere dingen.
  • @mouche is /bin/sh betekent vaak niet ' dat ' is meestal een symbolische link naar iets anders. Ik ' d typ ls -l /bin/sh om te zien waarnaar ' een symlink is. In sommige gevallen verandert een symbolische link naar iets het gedrag ervan, ' denk ik niet dat bash zo is.
  • @xenoterracide – Met bash aangezien /bin/sh veel bash-functies uitschakelt (het gaat in POSIX-nalevingsmodus).

Antwoord

Aangenomen dat de onbekende shell het uitvoeren van een absoluut commando ondersteunt, zou je kunnen proberen: /bin/bash

Om de standaard shell te veranderen, zou ik chsh(1) gebruiken. Voorbeeldgebruik: chsh -s /bin/bash $USER

Reacties

  • Verandert chsh permanent de shell of alleen voor de huidige sessie ?
  • @mouche permanent; het verandert je invoer in /etc/passwd
  • @mouche, chsh(1) staat alleen toe om te veranderen naar een shell die wordt vermeld in /etc/shells (en is waarschijnlijk beschikbaar). chsh -l somt de alternatieven op. Wees voorzichtig, sommige (zoals nologin) zijn gedefinieerd voor accounts die nooit mogen worden gebruikt om in te loggen (leuke manier om jezelf buiten te sluiten), er kunnen lokale toevoegingen zijn voor speciaal gebruik.

Antwoord

Je typt bash. Als je wilt dat dit een permanente wijziging is, verander dan de standaardshell in /bin/bash door /etc/passwd te bewerken.

Hier “s enkele fragmenten uit mijn /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 

Het allerlaatste veld bevat de shell, waarbij het veld na de laatste wordt gewijzigd : naar een geldige of ongeldige shell zal werken. /bin/false en /sbin/nologin betekenen beide de gebruiker heeft geen echte login-shell, hoewel als pam niet goed is ingesteld, dit niet betekent dat ze niet kunnen inloggen (ik heb een bug hierover gerapporteerd in Arch Linux, omdat je grafisch kunt inloggen zonder een login-shell te hebben). /bin/bash en /bin/zsh zijn beide geldige shells, zie /etc/shells voor een lijst met geldige shells op uw systemen. Hier “is mijn /etc/shells als je” geïnteresseerd bent.

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

Ja, je kunt chsh of usermod om dezelfde dingen te doen, onthoud dat dit slechts gestructureerde tekstbestanden zijn en TIMTOWTDI.

Opmerkingen

  • U wilt waarschijnlijk chsh gebruiken in plaats van handmatig passwd
  • @Michael er zijn ongeveer 5 (POOMA) verschillende manieren om de shell te veranderen in /etc/passwd Ik had ' geen zin om ze op te sommen , omdat ik het altijd handmatig doe. chsh en usermod kunnen het allebei.
  • Knoeien met configuratiebestanden is een slecht idee (TM), een fout kan het systeem onbruikbaar maken. Ja, het is vaak de enige / snelste manier, maar doe het dan met uiterste zorg .

Antwoord

Als chsh of het handmatig bewerken van de configuratie niet werkt, maar een ~ / .profile-script wordt uitgevoerd bij het inloggen, voeg deze regel toe:

exec /bin/bash --login 

Commentaren

  • Na een tijdje rondkijken, was dit de oplossing die ik nodig had. Bedankt!
  • Geweldig idee, vooral als de shell bronnen selecteert die bestand zijn bij het opstarten …
  • touch ~/.bash_profile of anders voert bash zichzelf uit in een lus: bash neemt ~/.profile in het geval ~/.bash_profile niet ' bestaat niet.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *