Python source d'ACCUEIL/.bashrc' avec os.system()
Je suis en train d'écrire un script python (Linux) qui est d'ajouter quelques aliases (écrit à HOME/.bash_aliases
).
Afin de faire un alias disponibles immédiatement après qu'il a été écrit que je devrais question de la suite intégrée à bash:
source HOME/.bashrc
source
est un bash intégré donc je ne peux pas juste:
os.system(source HOME/.bashrc)
Si je tente quelque chose comme:
os.system('/bin/bash -c source HOME/.bashrc')
...le gel, le script (tout comme est en attente de quelque chose).
Des suggestions ?
OriginalL'auteur Andrei Ciobanu | 2010-09-07
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez n'est pas possible. Un programme (votre script) ne peut pas modifier l'environnement de l'appelant (le shell que vous exécutez à partir de).
Une autre approche qui permettrait de faire quelque chose près, c'est de l'écrire dans les termes d'une fonction bash, qui est exécuté dans le même processus et peuvent modifier l'appelant. Notez que l'approvisionnement au cours de l'exécution peut avoir des effets secondaires négatifs selon ce que l'utilisateur a dans leur bashrc.
J'ai essayé d'utiliser un script bash pour faire un source, mais n'a pas fonctionné non plus.
OriginalL'auteur Daenyth
ce que vous essayez de faire est impossible. ou mieux, comment vous essayez de faire, c'est impossible.
votre commande bash est faux.
bash -s command
ne pas exécutercommand
. il vient de magasins de la chaîne "commande" dans la variable$1
et puis vous dépose à l'invite de commandes. c'est pourquoi le script python semble se figer. ce que vous vouliez faire est debash -c command
.pourquoi avez-vous source
.bashrc
? ne serait-il pas suffisant de simplement source.bash_aliases
?même si vous avez obtenu votre commande bash droit, les modifications ne prendront effet qu'à la fête de la session a commencé à partir de python. une fois que bash session est fermée, et votre script python est fait, vous êtes de retour à l'original de votre bash session. tous les changements dans le bash session a commencé à partir de python est perdu.
chaque fois que vous voulez changer quelque chose dans le courant de la session bash, vous devez le faire à partir à l'intérieur de l'actuelle session bash. la plupart des commandes que vous exécutez à partir de bash (système de commandes, scripts python, même des scripts bash) va lancer un autre processus, et tout ce que vous faites dans cet autre processus n'affectera pas votre première session bash.
source
est un bash builtin qui permet d'exécuter des commandes à l'intérieur de la cours d'exécution bash session, au lieu de pondre un autre processus et l'exécution de ces commandes. la définition d'une fonction bash est une autre façon d'exécuter des commandes à l'intérieur de la cours d'exécution bash session.voir cette réponse pour plus d'informations sur la recherche et de l'exécution.
ce que vous pouvez faire pour obtenir ce que vous voulez
modifier votre script python pour faire les changements nécessaires pour
.bash_aliases
.préparer un script bash pour exécuter votre script python et puis
.bash_aliases
.ajouter un alias à votre
.bashrc
à la source de ce scriptmaintenant, quand vous tapez
add_alias some_alias
dans votre invite de bash, il sera remplacé parsource modify_bash_aliases.sh
, puis exécuté. depuissource
est un bash builtin, les commandes à l'intérieur du script sera exécuté à l'intérieur de la cours d'exécution bash session. le script python sera toujours exécuté dans un autre processus, mais, par la suitesource
commande sera exécutée à l'intérieur de votre actuellement en cours d'exécution bash session.une autre façon de
modifier votre script python pour faire les changements nécessaires pour
.bash_aliases
.préparer un bash fonction à exécuter votre script python et puis
.bash_aliases
.maintenant, vous pouvez appeler la fonction comme ceci:
add_alias some_alias
OriginalL'auteur lesmana
[[solution]]
http://stackoverflow.com/questions/6856119/can-i-use-an-alias-to-execute-a-program-from-a-python-script
OriginalL'auteur Cereal_Killer
J'avais une question intéressante où j'avais besoin à la source d'un fichier RC pour obtenir la sortie correcte dans mon script python.
J'ai finalement utilisé à l'intérieur de ma fonction à apporter sur les mêmes variables dans le fichier bash j'avais besoin de source. Assurez-vous d'avoir os importés.
OriginalL'auteur Jim Bagwell