Yeni kabuk çalıştırdığımda $ SHELL neden değişmiyor?


14
 $ echo $SHELL
/bin/bash
 $ /bin/ksh93
 $ echo $SHELL
/bin/bash
 $ file /bin/ksh93
/bin/ksh93: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), 
dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped

 $ getent passwd test111
test111:x:1008:1008:,,,:/tmp:/bin/ksh93
 $ ssh test@localhost
test@localhost's password:
 $ echo $SHELL
/bin/ksh93
 $ bash
 $ echo $SHELL
/bin/ksh93

$SHELLBaşka bir kabuk çalıştırdıktan sonra değişmesini bekliyoruz . Neden olmasın?

Not Ancak kabuk değişir, yalnızca $ SHELL değişkeni aynı kalır:

 $ dash
 $ echo $SHELL
/bin/bash
 $ T=test ; [[ $T = *est ]] && echo ok
dash: [[: not found

2
echo $0mevcut kabuğu almak için kullanın
Manula Waidyanatha

Yanıtlar:


13

Bu değişkenin değişmesini beklememelisiniz. Varsayılan kabuğunuzun yolunu, yani şu anda çalıştırdığınız kabuğu değil, şifre veritabanında depolanan yolu depolamak için kullanılır.


8

SHELLolan POSIX ile belirtilen . Alıntı yapmak:

SHELL Bu değişken, kullanıcının tercih ettiği komut dili yorumlayıcısının yol adını temsil edecektir. [...]

Farklı bir kabuk çalıştırmak, kullanıcının tercihinde bir değişiklik olduğu anlamına gelmez.

Çoğu * .nix sistemi POSIX uyumluluğunu hedeflediğinden, POSIX'in belirttiği şey türlerini ve bunları nerede arayacağınızı öğrenmek iyidir. Çevre değişkenleri bunlardan biridir.


-3

SHELL değişkeni , bazen varsayılan giriş kabuğunuzla eşleşen oturumunuzun üst kabuğunu saklar . $ SHELL, geçerli oturumu oluşturan ana kabuktur.

yani, eğer benim kullanıcı için bash kullanır ve bunu yaparsanız:, chsh -s /bin/zsh useryaptığımda echo $SHELL, görüntülenen kabuk hala olacak BASH.

bkz bu yazıyı .


4
Bağlantı verdiğiniz makale yanlış. Bunun tam tersi, yani SHELL, bazen ana kabuğunuzla eşleşen varsayılan giriş kabuğunuzu (son giriş zamanında) saklar. Bu değişken asla üst veya mevcut kabuğunuz tarafından değiştirilmez. Yapabilecekleri tek eylem, (beklenmedik bir şekilde) ayarlanmamışsa bunu ayarlamaktır.
jlliagre
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.