Kuinka vaihdan tuntemattomasta kuoresta bashiksi?

Olin yllättynyt siitä, että en löytänyt tätä kysymystä jo sivustolta. Joten tänään tuli $ ylöspäin, kun kirjauduin sisään uutena käyttäjänä. Tämä oli odottamatonta, koska pääkäyttäjän kehote alkaa username@computername:~$.

Joten miten vaihdan tästä muu kuori bashiin?

Kommentit

  • Vain siksi, että $ tuli esiin pikemminkin kuin username@computername:~$ ei tarkoita ' t tarkoittavan, että sitä ei ollut ' t bash. Kehotteen tarkan muotoilun määrittää PS1-muuttuja, joka voidaan määrittää tai mukauttaa eri tavoin eri käyttäjille.
  • @mouche Re: @frabjous echo $SHELL saadaksesi selville, mikä nykyinen kuori on.
  • @mouche @frabjous ja $: lla alkaminen on todella yleistä bashille, jotkut muut kuin bash-kuoret, kuten zsh, käyttävät% out of the box, uskon, että muut kuoret käyttävät muut asiat.
  • @mouche ollessa /bin/sh ei usein tarkoita ' t tarkoittavan paljon sitä, että ' s yleensä symboli johonkin muuhun. ' d kirjoitan ls -l /bin/sh nähdäksesi, mihin se ' on symboli. Joissakin tapauksissa symboli linkkinä johonkin muuttaa sen käyttäytymistä, en usko, että bash on niin.
  • @xenoterracide – Käyttämällä bash kuten /bin/sh poistaa käytöstä monet bash-ominaisuudet (se siirtyy POSIX-yhteensopivuustilaan).

Vastaus

Olettaen, että tuntematon kuori tukee absoluuttisen komennon suorittamista, voit yrittää: /bin/bash

Oletuskuoren vaihtamiseen käytän chsh(1). Esimerkkikäyttö: chsh -s /bin/bash $USER

Kommentit

  • Vaihtaako chsh pysyvästi vai vain nykyisen istunnon kuoren ?
  • @mouche pysyvästi; se muuttaa merkintääsi /etc/passwd
  • @mouche, chsh(1) sallii vaihtaa vain luettelossa olevaan kuoreen ryhmässä /etc/shells (ja oletettavasti käytettävissä). chsh -l luetellaan vaihtoehdot. Ole varovainen, jotkut (kuten nologin) on määritetty tileille, joita ei pitäisi koskaan käyttää kirjautumiseen (mukava tapa lukita itsesi), erityiskäyttöön saattaa olla paikallisia lisäyksiä.

vastaus

Kirjoitat bash. Jos haluat tämän olevan pysyvä, muuta oletuskuori muotoon /bin/bash muokkaamalla /etc/passwd.

Täällä ”s joitain katkelmia minun /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 

Viimeinen kenttä sisältää kuoren, kentän muokkaaminen viimeisen jälkeen : kelvolliseksi tai virheelliseksi kuoreksi toimii. /bin/false ja /sbin/nologin tarkoittavat käyttäjää ei ole todellista kirjautumissuorta, vaikka jos pamia ei ole määritetty oikein, se ei tarkoita, että he eivät voi kirjautua sisään (ilmoitin virheestä Arch Arch Linuxissa, koska voit kirjautua sisään graafisesti ilman sisäänkirjautumiskuorta). /bin/bash ja /bin/zsh ovat molemmat kelvollisia komentotulkkeja, katso /etc/shells luettelo kelvollisista kuoreista järjestelmät. Tässä on minun /etc/shells, jos olet kiinnostunut.

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

Kyllä, voit käyttää chsh tai usermod tehdä samoja asioita, muista, että nämä ovat vain jäsenneltyjä tekstitiedostoja ja TIMTOWTDI.

Kommentit

  • Haluat todennäköisesti käyttää chsh manuaalisen muokkaamisen sijaan passwd
  • @Michael on noin 5 (POOMA) tapaa vaihtaa kuorta /etc/passwd En halunnut ' tuntea olevani halunnut luetella mitään niistä , koska teen sen aina manuaalisesti. chsh ja usermod voivat molemmat tehdä sen.
  • Määrittelytiedostojen kanssa sekoittaminen on huono idea (virhe), virhe saattaa tehdä järjestelmästä käyttökelvottoman. Kyllä, se on usein ainoa / nopein tapa, mutta tee se sitten äärimmäisen varovasti .

Vastaa

Jos chsh tai määrityksen manuaalinen muokkaaminen ei toimi, mutta ~ / .profile-komentosarja suoritetaan sisäänkirjautumisen yhteydessä, lisää tämä rivi:

exec /bin/bash --login 

Kommentit

  • Tarkastellessani jonkin aikaa, tämä oli ratkaisu, jota tarvitsin. Kiitos!
  • Hieno idea, varsinkin jos kuori valitsi lähteet, jotka tiedosto käynnistyksen yhteydessä …
  • touch ~/.bash_profile tai muuten bash suorittaa itsensä silmukassa: bash vie ~/.profile, jos ~/.bash_profile doesn ' ei ole olemassa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *