Jak přepnu z neznámého prostředí na bash?

Byl jsem překvapen, že jsem tuto otázku již nenašel na webu. Takže dnes přišel $ po přihlášení jako nový uživatel. To bylo neočekávané, protože výzva mého hlavního uživatele začíná username@computername:~$.

Jak tedy přepnout z tohoto jiný shell do bash?

Komentáře

  • Jen proto, že $ přišel spíše než username@computername:~$ neznamená ' to není ' t bash. Přesné formátování výzvy je nastaveno proměnnou PS1, kterou lze nastavit nebo přizpůsobit různě pro různé uživatele.
  • @mouche Re: @frabjous echo $SHELL zjistit, jaký je váš aktuální shell.
  • @mouche @frabjous a počínaje $ je ve skutečnosti běžné pro bash, některé jiné než bash skořápky jako zsh používají% z krabice, věřím, že ostatní skořápky jiné věci.
  • @mouche /bin/sh často neznamená ' to moc, co ' je obvykle symbolický odkaz na něco jiného. ' d typem ls -l /bin/sh zobrazím, na co je ' symbolický odkaz. V některých případech to, že symbolický odkaz na něco změní jeho chování, si nemyslím, že je to bash.
  • @xenoterracide – Používání bash as /bin/sh zakáže mnoho bash funkcí (přejde do režimu shody POSIX).

Odpověď

Za předpokladu, že neznámý shell podporuje spuštění absolutního příkazu, můžete zkusit: /bin/bash

Ke změně výchozího prostředí použiji chsh(1). Ukázkové použití: chsh -s /bin/bash $USER

Komentáře

  • Změní chsh permanentně shell nebo jen pro aktuální relaci ?
  • @mouche Trvale; změní váš vstup v /etc/passwd
  • @mouche, chsh(1) umožní změnu pouze na uvedený shell v /etc/shells (a je pravděpodobně k dispozici). chsh -l uvádí alternativy. Buďte opatrní, některé (například nologin) jsou definovány pro účty, které by se nikdy neměly používat k přihlášení (pěkný způsob, jak se zamknout), mohou být přidány místní doplňky pro speciální použití.

Odpověď

Zadejte bash. Pokud chcete, aby to bylo trvalé, změňte výchozí prostředí na /bin/bash úpravou /etc/passwd.

Tady několik úryvků z mých /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 

Úplně poslední pole obsahuje shell, úprava pole za posledním : na platný nebo neplatný shell bude fungovat. /bin/false a /sbin/nologin oba znamenají uživatele nemá skutečný přihlašovací shell, i když pokud není pam nastavena správně, neznamená to, že se nemůže přihlásit (nahlásil jsem chybu v tomto v Arch Linuxu, protože se můžete přihlásit graficky, aniž byste měli přihlašovací shell). /bin/bash a /bin/zsh jsou obě platné skořápky, seznam platných skořápek najdete na stránce /etc/shells vaše systémy. Tady je moje /etc/shells pokud vás zajímá.

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

Ano, můžete použít chsh nebo usermod k provádění stejných věcí, nezapomeňte, že jde pouze o strukturované textové soubory a TIMTOWTDI.

Komentáře

  • Pravděpodobně budete chtít použít chsh místo ruční úpravy passwd
  • @Michael existuje asi 5 (POOMA) různých způsobů, jak změnit prostředí v /etc/passwd Neměl jsem ' pocit, že bych chtěl vypsat některý z nich , protože to dělám vždy ručně. chsh i usermod to dokážou.
  • Pohánění konfiguračních souborů je Bad Idea (TM), chyba může způsobit nepoužitelnost systému. Ano, je to často jediný / nejrychlejší způsob, ale udělejte to s extrémní péčí .

Odpovědět

Pokud chsh nebo ruční úprava konfigurace nebude fungovat, ale při přihlášení je spuštěn skript ~ / .profile, přidejte tento řádek:

exec /bin/bash --login 

Komentáře

  • Poté, co jsem se po chvíli rozhlédl, toto bylo řešení, které jsem potřeboval. Děkuji!
  • Skvělý nápad, zvláště pokud shell vybral zdroje, které tento soubor při spuštění …
  • touch ~/.bash_profile nebo jinak se bash spustí ve smyčce: bash vezme ~/.profile v případě, že ~/.bash_profile nebude ' neexistují.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *