Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python子进程运行bash命令_Python_Python 3.x_Bash_Subprocess - Fatal编程技术网

使用python子进程运行bash命令

使用python子进程运行bash命令,python,python-3.x,bash,subprocess,Python,Python 3.x,Bash,Subprocess,我在bash_配置文件中有一个命令,例如id=12345,我定义了以下别名 alias obs=“echo$id”,因为随着时间的推移,该id会发生变化 现在我要做的是在python脚本中调用这个别名,以实现不同的目的。我的默认shell是bash,因此我根据web上的建议尝试了以下内容 import subprocess subprocess.call('obs', shell=True, executable='/bin/bash') subprocess.call(['/bin/bas

我在bash_配置文件中有一个命令,例如
id=12345
,我定义了以下别名

alias obs=“echo$id”
,因为随着时间的推移,该id会发生变化

现在我要做的是在python脚本中调用这个别名,以实现不同的目的。我的默认shell是bash,因此我根据web上的建议尝试了以下内容

import subprocess

subprocess.call('obs', shell=True, executable='/bin/bash')

subprocess.call(['/bin/bash', '-i', '-c', obs])

subprocess.Popen('obs', shell=True,executable='/bin/bash')

subprocess.Popen(['/bin/bash', '-c','-i', obs])

然而,它们似乎都不起作用!我做错了什么

.bash\u配置文件
不是由
Popen
和朋友读取的

不过,您的脚本可以使用环境变量(通过
os.environ

您可以在Bash shell中使用
export
将值导出为环境变量,或者使用
env

export MY_SPECIAL_VALUE=12345
python -c "import os; print(os.environ['MY_SPECIAL_VALUE'])"
# or
env MY_SPECIAL_VALUE=12345 python -c "import os; print(os.environ['MY_SPECIAL_VALUE'])"

壳别名位于交互式壳功能中。您不能从Python访问它们。您可以只访问环境变量(
id
),或者甚至不使用
env
,例如
MY_SPECIAL\u VALUE=18 python…
@MarkSetchell当然可以,它在Bash中工作,但
env
是可移植的。