GNU/Linux >> Znalost Linux >  >> Linux

Jak spustím program s jiným pracovním adresářem, než je aktuální, z prostředí Linux?

Zavolejte program takto:

(cd /c; /a/helloworld)

Závorky způsobí, že se vytvoří podskořápka. Tento sub-shell pak změní svůj pracovní adresář na /c , pak provede helloworld od /a . Po ukončení programu se sub-shell ukončí a vrátí vás do vaší výzvy nadřazeného shellu v adresáři, ze kterého jste začali.

Zpracování chyb: Chcete-li se vyhnout spuštění programu bez změny adresáře, např. při chybně napsaném /c , proveďte provedení helloworld podmíněné:

(cd /c && /a/helloworld)

Snížení využití paměti: Abyste zabránili plýtvání pamětí při provádění hello world, zavolejte helloworld přes exec:

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

[Díky Joshovi a Julianovi za poskytnutí tipů na zlepšení této odpovědi!]


Podobné jako odpověď Davida Schmitta plus Joshův návrh, ale nenechává spuštěný proces shellu:

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

Tento způsob je více podobný tomu, jak obvykle spouštíte příkazy v shellu. Abyste viděli praktický rozdíl, musíte spustit ps ef z jiného shellu s každým řešením.


Možnost, která nevyžaduje subshell a je zabudována do bash

(pushd SOME_PATH && run_stuff; popd)

Demo:

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

Linux
  1. Jak analyzovat Json pomocí skriptování Shell v Linuxu?

  2. Odkud se spouští skript Shell?

  3. Jak zajistit, aby Localhost s jiným adresářem než index fungoval?

  1. Linux – Jak spustit bootloader z Linuxu?

  2. Jak spouštět skripty Pythonu ze shellu

  3. Změňte pracovní adresář v shellu pomocí python skriptu

  1. Jak spustit příkaz / skript Linux Shell na pozadí

  2. Spusťte shell skript v novém terminálu z aktuálního terminálu

  3. linux:jak spustit příkaz v daném adresáři