Nasıl geçerli kabuk İ'm çalışma belirlemek için?
Ne üzerinde çalışıyorum geçerli kabuk belirleyebilirim?
ps
komutunun çıktısını tek başına yeterli olur mu?
Nasıl bu UNIX farklı tatlar yapılabilir mi?
CEVAP
Bu bulmak için 3 yaklaşım vardıradımevcut kabuk yürütülebilir:
Lütfen tüm 3 yaklaşırsa kabuk yürütülebilir
/bin/sh
ise kandırılmış olabilir ama gerçekten bir örnek içinbash
sık sık olur) yeniden adlandırıldı.Böylece
ps
çıkış yapıp yapmayacağı ikinci soru ile cevap verdi "her zaman değil".echo $0
- kabuk durumda gerçek kabuk program adını Yazdırps -ef | grep $$ | grep -v grep
çalışan işlemler listesinde geçerli işlem KİMLİĞİ için bak. Geçerli işlem kabuk, kabuk içerir.Bu 100% güvenilir olabilir DİĞER işler kimin
ps
listesini içerir aynı sayı olarak Shell'in işlem KİMLİĞİ, özellikle eğer o KİMLİĞİ bir küçük # (ör: shell PID "5", bulabilirsiniz işlemler "java5" veya "perl5" aynıgrep
çıktı!)."Ps" yaklaşımı, shell adı üstünde değil, her zaman güvenilir olmak. ikinci sorun sunarecho $SHELL
geçerli kabuk yolunu herhangi bir kabuk içinSHELL
değişken. Uyarı için sonuncusu ise, açmak için bir kabuk olarak açıkça bir alt süreci (örneğin değil girişiniz kabuk) alacaksın giriş Shell'in değer yerine - böyle bir olasılık kullanınps
$0
yaklaşım.
Eğer yürütülebilir gerçek kabuk eşleşen değilse ancak, (
/bin/sh
örneğin aslında bash veya ksh), sezgisel gerekir. Burada bazı çevresel değişkenler çeşitli kabukları için özel:$version
ancak, üzerinde ayarlanır$BASH
bash ayarlanır$shell
(küçük) csh ya da ancak gerçek shell adına ayarlanır$ZSH_NAME
zsh ayarlanırksh
$PS3
$PS4
set, normal Bourne shell (sh
) sadece$PS1
$PS2
ayarlanmış ise. Bu genellikle gibi zor ayırt - TEK fark, tüm seti envionmental değişkenler arasındash
ksh
elimizde yüklü Solaris boxen.$ERRNO
,$FCEDIT
,$LINENO
,$PPID
,$PS3
,$PS4
,$RANDOM
,$SECONDS
,$TMOUT
.
Nasıl Python ile geçerli çalışma dizin...
nasıl'ırb mutlak yolu s geçerli ç...
Nasıl komut dizin için geçerli çalışma...
Nasıl Linux kabuk geçerli farklı bir ç...
Nasıl Android çalışma zamanında geçerl...