Her bash komutundan sonra bir komut dosyası nasıl çağırılır


22

hey.shHer bash komutundan sonra adlandırılmış bu örnekte bir komut dosyası çağırılabilir mi?

Örneğin lshit enter yazın ve ls çalışır, sonra hey.shçalışır.

Sonra cd .. (veya başka bir komut) yazarsanız, cd çalışır sonra çalışır hey.shve böyle devam eder.


2
Bu bir XY problemi veya çok tuhaf bir fikirdir; gerçekte ne elde etmeye çalışıyorsun?
jasonwryan

bash.rc içindeki takma ad belki?
moonbutt74

Yanıtlar:


29
PROMPT_COMMAND+="hey.sh;"

PROMPT_COMMAND Ayarlanırsa, değer her bir birincil bilgi istemi yayınlanmadan önce bir komut olarak yürütülür.


Not: Ortam değişkenleri - kabuk değişkenleri

Varsayılan olarak, PROMPT_COMMANDbir değil bir ortam değişkeni . Bu sadece bir kabuk değişkeni .

Her iki değişken türüne de aynı şekilde erişilir ( "$variable*"), ancak çevre değişkenleri alt işlemler tarafından miras alınırken, kabuk değişkenleri alınmaz.

Kural, kabuğunuzu yapılandıran çevre değişkenleri + kabuk değişkenlerini büyük harf yapmaktır (PROMPT_COMMAND kabuğunuzu yapılandırır), ancak diğer değişken türlerini küçük harflerle tutar.

In Bash , yapabileceğiniz: declare -pDeğişken ihraç (= bir ortam değişkeni) olup olmadığını öğrenmek için:

$ declare -p PATH
declare -x PATH=... #-x means it's exported
$ declare PROMPT_COMMAND
declare -- PROMPT_COMMAND=... #no -x so just a shell variable

2
@John No. Yapma export. Sadece ayarlayın (veya yukarıda gösterildiği gibi ekleyin).
PSkocik

Düzgün, peki ya sonra?
moonbutt74

2
Her komuttan önce @ moonbutt74 == Her komuttan sonra + + bash seansınızın başında
PSkocik

@ PSkocik Anladım, merak ettim ki zaten çevresel bir değişken olsaydı, hızlı bir yankı komutu ile olduğunu öğrendim. Bu tam olarak aradığım şeyi yaptı
John

@John Varsayılan olarak, sadece bir ortam değişkeni değil bir kabuk değişkenidir.
PSkocik
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.