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
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 (zoalsnologin
) 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 handmatigpasswd
- @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.
$
opkwam in plaats vanusername@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.echo $SHELL
om erachter te komen wat je huidige shell is./bin/sh
betekent vaak niet ' dat ' is meestal een symbolische link naar iets anders. Ik ' d typls -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.bash
aangezien/bin/sh
veel bash-functies uitschakelt (het gaat in POSIX-nalevingsmodus).