Ist es möglich, ein Bash-Skript (im Grunde wie ein .bashrc
oder .bash_profile
) zu haben, das nur beim Wechseln in einen bestimmten Ordner ausgeführt wird?
Antwort1
Fügen Sie dies zu Ihrem hinzu ~/.bashrc
.
Wenn .bashrc
es sich im aktuellen Arbeitsverzeichnis befindet:
PROMPT_COMMAND='if [[ "$bashrc" != "$PWD" && "$PWD" != "$HOME" && -e .bashrc ]]; then bashrc="$PWD"; . .bashrc; fi'
Antwort2
Abhängig von Ihrem genauen Anwendungsfall und Ihren Einschränkungen,ondirkönnte Ihren Bedürfnissen entsprechen:
ondir ist ein kleines Programm zum Automatisieren von Aufgaben, die bestimmte Verzeichnisse betreffen. Es funktioniert, indem es Skripte in Verzeichnissen ausführt, wenn Sie diese betreten und verlassen.
Dies geschieht durch die Verwendung einer zentralen ~/.ondirrc
Datei für die Konfiguration pro Verzeichnis. Im Gegensatz dazu PROMPT_COMMAND
ermöglicht das clevere Setup, das @Cyrus vorgeschlagen hat, dass die Konfiguration in den einzelnen Verzeichnissen selbst gespeichert wird. Jeder Ansatz ist gültig; es hängt von den Einschränkungen und Daten ab, mit denen Sie arbeiten.
Haftungsausschluss:Ich habe es nie ondir
persönlich verwendet. Ich bin darauf gestoßen, als ich nach einer automatischen Methode gesucht habe, umGit-Benutzerkonfiguration pro Verzeichnis. In diesem Fall ondir
hat es nicht meinen Anforderungen entsprochen – ich habe schließlich einen Git-Alias verwendet, --config
der Optionen an übergibt git clone
.
Antwort3
Ergänzung zur Antwort von @Cyrus: Wenn Sie verwenden zsh
, müssen Sie Folgendes verwenden precmd()
:
PROMPT_COMMAND='if [[ "$profile" != "$PWD" && "$PWD" != "$HOME" && -e .profile ]]; then profile="$PWD"; source .profile; fi'
precmd() { eval "$PROMPT_COMMAND" }
Es wird beantwortet vondiese Antwort
Anmerkung:
meine prompten Tests für .profile
nicht .bashrc
.