栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python subprocess.call bash别名

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python subprocess.call bash别名

更新: 感谢您为该hack解决问题所做出的贡献,我很高兴它很有用。但是 更好的 答案是三位一体的,在页面的下方很虚弱…

如果您所需的别名是在〜/ .bashrc中定义的,则由于以下几个原因它不会运行:

1)您必须给’shell’关键字arg:

subprocess.call('command', shell=True)

否则,您给定的命令将用于查找可执行文件,而不是传递给外壳程序,而外壳程序将扩展别名和函数之类的内容。

2)默认情况下,subprocess.call和朋友使用’/ bin /
sh’shell。如果这是您要调用的Bash别名,则需要使用’executable’关键字arg告诉子进程使用bash而不是sh:

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

3)但是,/ bin / bash除非以’interactive’外壳程序(带有’-i’开头),否则不会源〜/
.bashrc。不幸的是,您不能传递可执行文件=’/ bin / bash
-i’,因为它认为整个值就是可执行文件的名称。因此,如果您的别名是在用户的常规交互式启动中定义的,例如在.bashrc中,则必须使用以下替代形式来调用命令:

subprocess.call(['/bin/bash', '-i', '-c', command])# i.e. shell=False (the default)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626295.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号