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 -lsomt 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
chshgebruiken in plaats van handmatigpasswd - @Michael er zijn ongeveer 5 (POOMA) verschillende manieren om de shell te veranderen in
/etc/passwdIk 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_profileof anders voert bash zichzelf uit in een lus: bash neemt~/.profilein het geval~/.bash_profileniet ' 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 $SHELLom erachter te komen wat je huidige shell is./bin/shbetekent vaak niet ' dat ' is meestal een symbolische link naar iets anders. Ik ' d typls -l /bin/shom 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.bashaangezien/bin/shveel bash-functies uitschakelt (het gaat in POSIX-nalevingsmodus).