GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-Skripte beim Betreten eines Verzeichnisses ausführen?

Was ist der beste Weg, um ein Skript auszuführen, wenn ich mich in ein Verzeichnis begebe?
Wenn ich in ein neues Verzeichnis gehe, möchte ich, dass bash das Skript projectSettings.bash ähnlich wie RVM ausführt.

Akzeptierte Antwort:

Sie können cd erstellen eine Funktion (und pop und pushd ) und lassen Sie es erkennen, wenn Sie dieses bestimmte Verzeichnis betreten.

cd () { builtin cd "[email protected]" && chpwd; }
pushd () { builtin pushd "[email protected]" && chpwd; }
popd () { builtin popd "[email protected]" && chpwd; }
unset_all_project_settings () {
  # do whatever it takes to undo the effect of projectSettings.bash,
  # e.g. unset variables, remove PATH elements, etc.
}
chpwd () {
  case $PWD in
    /some/directory|/some/other/directory) . ./projectSettings.bash;;
    *) unset_all_project_settings;;
  esac
}

Tun Sie dies nicht in Verzeichnissen, die Sie nicht auf die Whitelist gesetzt haben, da es für jemanden sehr einfach wäre, Sie dazu zu bringen, beliebigen Code auszuführen – senden Sie Ihnen ein Archiv, damit Sie es entpacken, in das Verzeichnis wechseln, das es erstellt hat, und Sie Ich habe jetzt den Code des Angreifers ausgeführt.

Ich empfehle diesen Ansatz nicht, da das Skript ausgeführt wird, selbst wenn Sie dieses Verzeichnis aus irgendeinem Grund eingeben, der nichts mit der Arbeit am Projekt zu tun hat. Ich schlage vor, eine bestimmte Funktion zu haben, die in das Projektverzeichnis wechselt und das Einstellungsskript bezieht.

myproj () {
  cd /some/directory && . ./projectSettings.bash
}

Linux
  1. Warum kann ich Cd nicht in einem Bash-Skript verwenden?

  2. Verwenden Sie die Erweiterung .sh oder .bash für Bash-Skripte?

  3. Verwenden des Linux-Sleep-Befehls in Bash-Skripten

  4. Führen Sie alle Shell-Skripte im Ordner aus

  5. Wie führt man ein Bash-Skript aus?

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in Bash vorhanden ist

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in Bash vorhanden ist

Kommentare in Bash-Skripten schreiben

So führen Sie alle Skripte in einem Verzeichnis unter Linux aus

So erstellen Sie Dokumente mit Bash-Skripten

Bash ändert das Verzeichnis nicht mehr