2010-07-18 12 views
15

Genellikle chpwd() kancasını sağlayan zsh kullanıyorum. Yani: cwd, cd yerleşiği tarafından değiştirilirse, eğer varsa, zsh otomatik olarak chpwd() yöntemini çağırır. Bu, cwd'ye bağlı değişkenler ve takma adların ayarlanmasına izin verir.Bwd'de cwd'nin ne zaman değiştiğini öğrenmek için bir kanca var mı?

Şimdi .zshrc'nin bu parçasını bash'a taşımak istiyorum, ancak chpwd() 'nin bash tarafından tanınmadığını buldum. Bash'da zaten var olan benzer bir işlev var mı? CD'yi yeniden tanımlamanın (aşağıya bakınız) farkındayım, ancak daha zarif bir çözümü hedefliyorum.

function cd() 
{ 
    builtin cd [email protected] 
    chpwd 
}
+4

Neden 'function cd' zarif değil? – user123444555621

+0

Çözümü beğendim, temiz görünüyor! – antonagestam

+0

[Unix & Linux üzerinde benzer bir soru] (http://unix.stackexchange.com/questions/21363/execute-bash-scripts-on-entering-a-directory). Çözümün benim kullandığımın aynısı, neden onu yetersiz gördüğünü anlamıyorum. – Gilles

cevap

10

Bir DEBUG trap veya PROMPT_COMMAND kullanması gerekir.

Örnekler: PROMPT_COMMAND tanımlanan fonksiyon her hızlı olsa da, boş olanlar da önce çalıştırılan

trap chpwd DEBUG  # calls the function before each command 

PROMPT_COMMAND=chpwd # calls the function after each command 

not edin.

+2

küçük bir örnek snippet'i harika olurdu. –

+0

Güzel görünüyor. Kod snippet'i için +1 – marcio

+1

@marcioAlmada: Örnekler ekledim. –

İlgili konular