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

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

Rufen Sie das Programm so auf:

(cd /c; /a/helloworld)

Die Klammern bewirken, dass eine Sub-Shell erzeugt wird. Diese Sub-Shell ändert dann ihr Arbeitsverzeichnis in /c , führt dann helloworld aus ab /a . Nachdem das Programm beendet wurde, wird die Sub-Shell beendet und Sie kehren zum Prompt der übergeordneten Shell in dem Verzeichnis zurück, von dem aus Sie gestartet wurden.

Fehlerbehandlung: Um zu vermeiden, dass das Programm ausgeführt wird, ohne das Verzeichnis geändert zu haben, z. wenn /c falsch geschrieben wurde , führen Sie die Ausführung von helloworld durch bedingt:

(cd /c && /a/helloworld)

Reduzierung der Speichernutzung: Rufen Sie helloworld auf, um zu vermeiden, dass die Subshell während der Ausführung von hello world Speicherplatz verschwendet über exec:

(cd /c && exec /a/helloworld)

[Danke an Josh und Juliano für die Tipps zur Verbesserung dieser Antwort!]


Ähnlich wie David Schmitts Antwort, plus Joshs Vorschlag, aber lässt keinen Shell-Prozess laufen:

(cd /c && exec /a/helloworld)

Dieser Weg ähnelt eher dem, wie Sie normalerweise Befehle auf der Shell ausführen. Um den praktischen Unterschied zu sehen, müssen Sie ps ef ausführen von einer anderen Shell mit jeder Lösung.


Eine Option, die keine Subshell benötigt und in Bash integriert ist

(pushd SOME_PATH && run_stuff; popd)

Demo:

$ pwd
/home/abhijit
$ pushd /tmp # directory changed
$ pwd
/tmp
$ popd
$ pwd
/home/abhijit

Linux
  1. Wie parse ich Json mit Shell-Scripting in Linux?

  2. Linux – Wie führe ich einen Bootloader von Linux aus?

  3. Wo wird ein Shell-Skript ausgeführt?

  4. Wie bekomme ich den Localhost mit einem anderen Verzeichnis zum Index zum Laufen?

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

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

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

So führen Sie einen Alias ​​mit Sudo in Linux aus

Geniale Möglichkeiten zum Ausführen eines Programms unter Linux

So verbinden Sie sich mit Samba mit Linux Active Directory

Wie man ein C-Programm unter Linux schreibt und ausführt