2010-07-18 5 views
15

Ich verwende normalerweise zsh, die den chpwd() Hook bereitstellt. Das heißt: Wenn der cwd durch den eingebauten cd geändert wird, ruft zsh automatisch die Methode chpwd() auf, falls sie existiert. Dies ermöglicht die Einrichtung von Variablen und Aliasen, die vom cwd abhängen.Gibt es einen Haken in Bash, um herauszufinden, wann sich der cwd ändert?

Jetzt möchte ich dieses Bit meiner .zshrc zu bash portieren, aber festgestellt, dass chpwd() nicht von bash erkannt wird. Gibt es bereits eine ähnliche Funktionalität in bash? Mir ist klar, dass CD neu definiert wird (siehe unten), aber ich strebe eine elegantere Lösung an.

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

Warum ist 'Funktion cd' nicht elegant? – user123444555621

+0

Ich mag deine Lösung, sieht sauber aus! – antonagestam

+0

[Ähnliche Fragen zu Unix & Linux] (http://unix.stackexchange.com/questions/21363/execute-bash-scripts-on-entering-a-directory). Ihre Lösung ist die gleiche, die ich verwenden würde, ich sehe nicht, warum Sie es für unelegant halten. – Gilles

Antwort

10

würden Sie haben eine DEBUG trap oder PROMPT_COMMAND verwenden.

Beispiele:

trap chpwd DEBUG  # calls the function before each command 

PROMPT_COMMAND=chpwd # calls the function after each command 

beachten, dass die in PROMPT_COMMAND definierte Funktion vor jeweils prompt, obwohl ausgeführt wird, auch leere.

+2

ein kleines Beispiel Snippet wäre großartig. –

+0

Scheint gut. +1 für Code-Snippet – marcio

+1

@marbioAlmada: Ich habe Beispiele hinzugefügt. –

Verwandte Themen