GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguo un programma con una directory di lavoro diversa da quella corrente, dalla shell di Linux?

Chiama il programma in questo modo:

(cd /c; /a/helloworld)

Le parentesi generano una sub-shell. Questa sub-shell cambia quindi la sua directory di lavoro in /c , quindi esegue helloworld da /a . Dopo che il programma è terminato, la sub-shell termina, riportandoti al prompt della shell madre, nella directory da cui sei partito.

Gestione degli errori: Per evitare di eseguire il programma senza aver cambiato la directory, ad es. in caso di errore di ortografia /c , eseguire l'esecuzione di helloworld condizionale:

(cd /c && /a/helloworld)

Riduzione dell'utilizzo della memoria: Per evitare che la subshell sprechi memoria durante l'esecuzione di hello world, chiama helloworld tramite exec:

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

[Grazie a Josh e Juliano per aver dato consigli su come migliorare questa risposta!]


Simile alla risposta di David Schmitt, oltre al suggerimento di Josh, ma non lascia in esecuzione un processo di shell:

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

In questo modo è più simile a come di solito esegui i comandi sulla shell. Per vedere la differenza pratica, devi eseguire ps ef da un'altra shell con ogni soluzione.


Un'opzione che non richiede una subshell ed è incorporata in bash

(pushd SOME_PATH && run_stuff; popd)

Demo:

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

Linux
  1. Come analizzare Json con lo script della shell in Linux?

  2. Linux:come eseguire un bootloader da Linux?

  3. Come ottenere il Localhost con una directory diversa dall'indice funzionante?

  4. Come eseguire script Python dalla shell

  5. Cambia la directory di lavoro nella shell con uno script python

Come eseguire tutti gli script in una directory in Linux

Come eseguire lo script della shell come servizio SystemD in Linux

Come eseguire un alias con Sudo in Linux

Modi brillanti su come eseguire un programma in Linux

Come connettersi con Samba a Linux Active Directory

Come scrivere ed eseguire un programma C in Linux