Belirli bir örneği ele alalım. % Co_de% komutu, varsayılan seçenekleri ayarlamak için
grep adlı bir ortam değişkeni kullanır.
Artık. % Co_de% dosyasının şu satırları içerdiği göz önüne alındığında:
line one
line two
GREP_OPTIONS komutunu çalıştırdığında
line one
test.txt seçeneğiyle grep çalıştırırsanız, eşleşen olmayan satırları döndürür, böylece çıkış
olacaktır.
line two
Şimdi seçeneği, bir çevre değişkeni ile ayarlamaya çalışacağız.
-
grep one test.txt olmadan ayarlanan ortam değişkenleri, aradığınız komutların ortamında miras alınmayacaktır.
GREP_OPTIONS='-v'
grep one test.txt
Sonuç:
line one
Açıkça,
-v seçeneği
export 'ye aktarılmadı.
Bu formun yalnızca kullanılacak kabuk için bir değişken oluştururken kullanmak istediğinizde, örneğin
-v 'sinde
grep vermek istemezsiniz.
-
Ancak, değişken o komut satırının ortamına aktarılır, böylece yapabilirsiniz
GREP_OPTIONS='-v' grep one test.txt
beklenen değerini döndürecek
line two
Başlatılan programın bu özel örneğinin ortamını geçici olarak değiştirmek için bu formu kullanın.
-
Bir değişkenin dışa aktarılması, değişkenin devralınmasına neden olur:
export GREP_OPTIONS='-v'
grep one test.txt
şimdi döndürüyor
line two
Bu, daha sonra başlatılan işlemlerin bir kabukta kullanılması için değişkenleri belirlemenin en yaygın yoludur
-
Bunların hepsi bash'ta yapıldı.
for i in * ; do bir bash yerleşiğidir;
$i bash sözdizimi. Diğer taraftan
export , kendi başına bir programdır. % Co_de% çağrıldığında, aşağıdaki şeyler gerçekleşir:
-
VAR=whatever komutu yeni bir işlem olarak yürütülür
-
env ortamı değiştirir ve
- argüman olarak verilen komutu çağırır. % Co_de% işlemi
env işlemiyle değiştirildi.
Örnek:
env GREP_OPTIONS='-v' grep one test.txt
Bu komut iki yeni süreci başlatacaktır: (i) env ve (ii) grep (aslında, ikinci işlem birinci olanın yerini alacaktır). % Co_de% sürecinin bakış açısından, sonuç tam olarak koşma ile aynıdır
GREP_OPTIONS='-v' grep one test.txt
Ancak, bash'ın dışındaysanız veya başka bir kabuk başlatmak istemiyorsanız bu deyimi kullanabilirsiniz (örneğin,
env çağrısından ziyade
env işlev ailesini kullanırken).
env üzerindeki ek not
Ayrıca,
command ifadesinin
grep yerine kullanılmasının nedeni de budur.
exec() bir programın tam yolunu gerektirmez, çünkü
system() değişkenini bir kabuk gibi yaptığı
#!/usr/bin/env işlevini kullanır ve sonra komut çalıştırmasıyla yerine kendisini kullanır. . Böylece, yol üzerinde bir tercümanın (perl veya python gibi) nerede oturduğunu bulmak için kullanılabilir.
Ayrıca, geçerli yolu değiştirerek hangi python değişkeninin çağrılacağını etkileyebileceğiniz anlamına da gelir. Bu, aşağıdakileri mümkün kılar:
echo -e '#!/usr/bin/bash\n\necho I am an evil interpreter!' > python
chmod a+x ./python
export PATH=.
calibre
, Calibre'yi başlatmak yerine
ile sonuçlanacak
I am an evil interpreter!