os.system () exécute la commande sous quel shell linux?
J'utilise /bin/tcsh que mon shell par défaut.
Cependant, le tcsh de commande de style os.système (setenv VAR val') ne fonctionne pas pour moi. Mais os.system ("export VAR=val') fonctionne.
Donc ma question est comment puis-je connaître le système d'exploitation.système de commande d'exécution en vertu de laquelle shell?
source d'informationauteur limi
Vous devez vous connecter pour publier un commentaire.
os.system()
appelle simplement lasystem()
appel système ("man 3 system
"). Sur la plupart des *nixes cela signifie que vous obtenez/bin/sh
.Noter que
export VAR=val
est techniquement pas la syntaxe standard (bien quebash
il comprend, et je pense queksh
fait trop). Il ne fonctionne pas sur les systèmes où/bin/sh
est en fait le Bourne shell. Sur ces systèmes, vous devez exporter et définir en tant que commandes distinctes. (Cela fonctionne avecbash
trop.)Viens de lire L'exécution de BASH à partir de Pythonpuis 17.1. sous-processus — sous-processus de la gestion — Python v2.7.3 documentationet j'ai vu le
executable
argument; et il semble fonctionner:Espère que cela aide quelqu'un,
Cheers!
Ces jours, vous devriez être en utilisant la Sous-processus module au lieu de
os.system()
. Selon la documentation, le shell par défaut est/bin/sh
. Je crois queos.system()
fonctionne de la même manière.Edit: je devrais aussi mentionner que le sous-processus module vous permet de définir l'environnement à la disposition de l'exécution de processus par le biais de la
env
paramètre.Si votre commande est un fichier shell, et le fichier est exécutable, et le fichier commence par "#!", vous pouvez choisir votre shell.
Vous pouvez écrire ce fichier et l'exécuter avec
subprocess.Popen(filename,shell=True)
et vous serez en mesure d'utiliser n'importe quel environnement vous souhaitez.Aussi, assurez-vous de lire cette sur
os.system
etsubprocess.Popen
.