python - bash 中的 subprocess.call() exec 命令,但我使用的是 zsh?
问题描述
我使用带有 zsh 的 Ubuntu 20。当我使用 subprocess.call 时,它总是使用 bash 来执行命令而不是 zsh。我该怎么做才能解决这个问题?
解决方案
不,sh
无论哪个 shell 是您的登录 shell,它都会使用。
有一个关键字参数可以选择不同的 shell,但您通常应该在子 shell 中运行尽可能少的代码;将非平凡的 shell 脚本与 Python 混合意味着维护者必须理解这两种语言。
whatever = subprocess.run(
'echo $SHELL',
shell=True, executable='/usr/bin/zsh',
check=True)
(这将回显您的登录 shell,因此/usr/bin/zsh
即使您在没有executable
, 或使用 Bash 的情况下运行它也会输出。)
在许多情况下,如果可以的话,你应该完全避免。shell=True
推荐阅读
- python - 字符串切片:从python中的字符串中删除第一个和第二个最后一个元素?
- javascript - 图像在 CSS 中未垂直对齐 | HTML 和 CSS
- graphics - 为什么我的 .stl 文件不会在文本编辑器中显示正确的信息?
- r - 按因子计算值的比例
- google-apps-script - 无法使用 Google Drive API 获取共享驱动器总大小
- jinja2 - 在 Jinja2 中访问嵌套字典和列表中的项目
- javascript - Visual Studio 代码智能感知在 JavaScript 文件中的自动完成函数调用中不起作用
- angular - 放大和角度的安全问题 - cognito
- r - 如何循环 dplyr mutate
- android - Android 编码动画 webp