GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter un programme avec un répertoire de travail différent de l'actuel, à partir du shell Linux ?

Appelez le programme comme ceci :

(cd /c; /a/helloworld)

Les parenthèses provoquent l'apparition d'un sous-shell. Ce sous-shell change alors son répertoire de travail en /c , puis exécute helloworld à partir de /a . Une fois le programme terminé, le sous-shell se termine, vous ramenant à l'invite du shell parent, dans le répertoire à partir duquel vous êtes parti.

Gestion des erreurs : Pour éviter d'exécuter le programme sans avoir changé de répertoire, par ex. en ayant mal orthographié /c , faire l'exécution de helloworld conditionnel :

(cd /c && /a/helloworld)

Réduire l'utilisation de la mémoire : Pour éviter que le sous-shell gaspille de la mémoire pendant l'exécution de hello world, appelez helloworld via exec :

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

[Merci à Josh et Juliano d'avoir donné des conseils pour améliorer cette réponse !]


Semblable à la réponse de David Schmitt, plus la suggestion de Josh, mais ne laisse pas un processus shell en cours d'exécution :

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

Cette méthode ressemble davantage à la façon dont vous exécutez habituellement des commandes sur le shell. Pour voir la différence pratique, vous devez exécuter ps ef d'un autre shell avec chaque solution.


Une option qui ne nécessite pas de sous-shell et est intégrée à bash

(pushd SOME_PATH && run_stuff; popd)

Démo :

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

Linux
  1. Comment analyser Json avec des scripts Shell sous Linux ?

  2. Linux - Comment exécuter un chargeur de démarrage à partir de Linux ?

  3. D'où est exécuté un script Shell ?

  4. Comment faire fonctionner Localhost avec un répertoire différent de l'index ?

  5. Exécuter un script shell dans un nouveau terminal à partir du terminal actuel

Comment exécuter tous les scripts dans un répertoire sous Linux

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment exécuter un alias avec Sudo sous Linux

Brilliant Ways sur la façon d'exécuter un programme sous Linux

Comment se connecter avec Samba à Linux Active Directory

Comment écrire et exécuter un programme C sous Linux