Python的subprocess.call一个bash别名 [英] Python subprocess.call a bash alias
问题描述
在工作中有列出完成的任务的脚本。这是别人写的,并托管在网络上。我在我的.bashrc一个别名调用此脚本,与它的许多标志和这样的,我想写一个python脚本,将调用这个别名每隔几分钟,所以我可以有更新的统计数据打开外壳。然而, subprocess.call(myAlias)
失败。我还是相当新的蟒蛇,并很努力想出解决办法。
At work there's a script that lists completed tasks. This was written by someone else and is hosted over the network. I have an alias in my .bashrc that calls this script, with its many flags and such, and I wanted to write a python script that would call this alias every few minutes so I can have a shell open with updated stats. However, subprocess.call("myAlias")
fails. I'm still fairly new to python, and am struggling to figure this out.
from subprocess import call
def callAlias():
call("myAlias")
callAlias()
我计划增加更多的太多了,但我打的障碍在我的第一个步骤。 :P
I plan on adding more too it, but I hit the snag on my first step. :P
我会发布更多,但还有很多敏感机密的东西,我必须要小心。很抱歉的含糊code和错误输出的不足。
I would post more, but there's a lot of sensitive confidential stuff I have to be careful with. Sorry for the vague code, and lack of error output.
推荐答案
您需要设置壳
关键字为True:
You need to set the shell
keyword to True:
call("myAlias", shell=True)
从相关文件:
如果壳
是真
,指定的命令将通过在shell执行。这可如果你正在使用Python主要是为加强控制其流提供了超过大多数系统贝壳仍希望访问其他shell的功能,如文件名通配符,壳管和环境变量扩充是有用的。
If
shell
isTrue
, the specified command will be executed through the shell. This can be useful if you are using Python primarily for the enhanced control flow it offers over most system shells and still want access to other shell features such as filename wildcards, shell pipes and environment variable expansion.
别名是一个壳特征(例如它们的定义和由外壳PTED间$ P $)。
Aliases are a shell feature (e.g. they are defined and interpreted by the shell).
然而,外壳(/ bin / sh的)执行非交互的,所以没有 .profile文件
或的.bashrc
文件的读取,可能你的别名是不会用。
However, the shell (/bin/sh) is executed non-interactively, so no .profile
or .bashrc
files are read and your alias probably is not going to be available.
如果你不愿意使用完整的扩展命令到您的Python脚本,你必须使用 $ ENV
环境变量使外壳读取文件中都定义别名反正:
If you are reluctant to use the full expanded command into your python script, you'll have to use the $ENV
environment variable to make the shell read the file with the alias defined in it anyway:
call("myAlias", shell=True, env=dict(ENV='/path/to/aliasfile'))
这篇关于Python的subprocess.call一个bash别名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!