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

Wo wird ein Shell-Skript ausgeführt?

Ich habe ein Shell-Skript in /usr/bin . Nennen wir es hello .

Es enthält Folgendes:

 echo "I am located in $PWD"
 echo "I am called from this directory: ???"

Ausführen von hello von /home/Documents Ich erwarte folgende Ausgabe:

 I am located in /usr/bin
 I am called from this directory: /home/Documents

Wie erhalte ich den Verzeichnispfad, in dem das Skript ausgeführt wird?

Akzeptierte Antwort:

Ich kann keine andere Antwort kommentieren, also poste ich hier. Wie gesagt, dirname liest nur $0 und nimmt den Verzeichnisnamen, also wenn Sie so etwas wie ../../directory/something.sh aufgerufen haben es löst diese Punkte nicht auf, sondern gibt nur ../../directory zurück . Anstatt die Subshell-Erweiterung mit cd zu verwenden und pwd , können Sie einen sehr intelligenten Befehl readlink verwenden das löst nicht nur gepunktete Verzeichnisse, sondern auch alle symbolischen Links auf. Ich schlage daher vor

  echo "I am located at $(readlink -e -- "$0")"

Sie können einen anderen dirname verwenden um dies herum, um das Verzeichnis anstelle der Datei zu erhalten.


Linux
  1. Möglichkeit, ein Shell-Skript immer als Root auszuführen?

  2. Wie führen Sie ein Skript beim Anmelden in * nix aus?

  3. Wie führe ich ein Programm mit einem anderen Arbeitsverzeichnis als dem aktuellen aus, von der Linux-Shell?

  4. Ändern Sie das Arbeitsverzeichnis in der Shell mit einem Python-Skript

  5. Führen Sie ein Shell-Skript als ein anderer Benutzer aus

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So führen Sie Python-Skripte von der Shell aus

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus

Ausführen von Skripts aus einem anderen Verzeichnis

Führen Sie ein Skript von überall aus