Bilinmeyen bir kabuktan bash'a nasıl geçebilirim?


41

Bu soruyu sitede bulamadığım için şaşırdım. $Yeni bir kullanıcı olarak giriş yaptıktan sonra bugün geldi. Bu beklenmedik bir durumdu çünkü ana kullanıcı istemi ile başlıyor username@computername:~$.

Peki bu diğer kabuğundan bash'a nasıl geçebilirim?


8
Sırf basmak olmadığı için $ortaya çıktığı için username@computername:~$. Bilgi isteminin tam olarak biçimlendirilmesi, farklı kullanıcılar için farklı şekilde ayarlanabilen veya özelleştirilebilen PS1 değişkeni ile ayarlanır.
frabjous

3
@ mouche Re: @frabjous echo $SHELLşu anki kabuğunuzun ne olduğunu bulmak için.
xenoterracide,

1
@ mouche @frabjous ve bir $ ile başlamak aslında bash için yaygındır, zsh gibi bazı bash olmayan kabukları kutudaki% 'i kullanır, diğer kabukları başka şeyler de kullanır.
xenoterracide

1
@mouche olmak /bin/shçoğu zaman başka bir şeye bir bağlantı olmadığı anlamına gelmez. Bunun ls -l /bin/shneye benzeyeceğini görmek için yazı yazarım. Bazı durumlarda bir şeyin sembolik bağı olmak davranışını değiştirir, sanırım bash'ın bu şekilde olduğunu sanmıyorum.
xenoterracide

3
@xenoterracide - kullanma basholarak /bin/sh devre dışı bırakır birçok bash özellikleri (POSIX uygunluk moduna girer).
Chris Down

Yanıtlar:


61

Bilinmeyen kabuğun mutlak bir komut çalıştırmayı desteklediğini varsayarsak, deneyebilirsiniz: /bin/bash

Varsayılan kabuğu değiştirmek için kullanırdım chsh(1). Örnek kullanım:chsh -s /bin/bash $USER


1
Chsh kabuğu kalıcı olarak mı değiştiriyor yoksa yalnızca geçerli oturum için mi?
mouche

10
Kalıcı olarak @mouche; girişinizi değiştiriyor/etc/passwd
Michael Mrozek

@mouche, chsh(1)sadece listelenen bir kabuğa dönüşmeye izin verecektir /etc/shells(ve uygun bir şekilde bulunur). chsh -lAlternatifleri listeler. Dikkatli olun, nologingiriş yapmak için hiç kullanılmaması gereken bazı hesaplar (bazıları gibi ) tanımlanır (kendinizi kilitlemenin iyi bir yolu), özel kullanımlar için yerel ilaveler olabilir.
vonbrand

19

Sen yaz bash. Bunun kalıcı olmasını istiyorsanız, varsayılan kabuğu değiştirerek /bin/bashdüzenleyin /etc/passwd.

İşte benden bazı pasajlar /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

En son alan kabuğunu içerir, sondan sonra alanı değiştirmek :geçerli ya da geçersiz bir kabuk çalışacaktır. /bin/falseve /sbin/nologinher ikisi de kullanıcının gerçek bir giriş kabuğuna sahip olmadığı anlamına gelir, ancak pam doğru kurulmamışsa bu giriş yapamayacakları anlamına gelmez (Arch Linux'ta bununla ilgili bir hata bildirdim, çünkü grafiksel olarak giriş yapamazsınız). bir giriş kabuğu). /bin/bashve /bin/zshher ikisi de geçerli mermilerdir, /etc/shellssistemlerinizdeki geçerli mermilerin bir listesine bakın . İşte benim /etc/shellsilgileniyorsan.

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

Evet , aynı şeyleri kullanabilir chshveya usermodyapabilirsiniz, lütfen bunların yalnızca yapılandırılmış metin dosyaları ve TIMTOWTDI olduğunu unutmayın.


11
Muhtemelen chshelle düzenlemek yerine kullanmak istersinizpasswd
Michael Mrozek

@Michael, kabuğunu değiştirmek için yaklaşık 5 (POOMA) farklı yol var /etc/passwd. Bunlardan herhangi birini listelemek istemedim çünkü her zaman elle yapıyorum. chsh ve usermod bunu yapabilir.
xenoterracide

Konfigürasyon dosyaları ile uğraşmak Kötü Bir Fikir'dir (TM), bir hata sistemi kullanılamaz hale getirebilir. Evet, çoğu zaman tek / en hızlı yoldur, ancak sonra çok dikkatli olun .
vonbrand

12

Eğer chsh veya config'i elle düzenlemek işe yaramazsa, ancak giriş sırasında bir ~ / .profile betiği çalıştırılırsa, şu satırı ekleyin:

exec /bin/bash --login

Bir süre etrafa baktıktan sonra ihtiyacım olan çözüm buydu. Teşekkürler!
PearsonArtPhoto

Harika bir fikir, özellikle eğer kabuk açılışta bu dosyayı seçtiyse ...
vonbrand

touch ~/.bash_profileveya aksi takdirde bash kendini bir döngüde çalıştırır: bash olmaması ~/.profiledurumunda bash alır ~/.bash_profile.
har-wradim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.