如何在Python中使用subprocess访问Bash环境变量?

2 投票
1 回答
2477 浏览
提问于 2025-04-18 12:01

我可以通过一个用 subprocess-handled 的方法来获取终端的宽度,像下面这样:

int(subprocess.Popen(['tput', 'cols'], stdout = subprocess.PIPE).communicate()[0].strip('\n'))

那么,我该如何以类似的方式获取 Bash 用户名呢?也就是说,我怎样才能在 Python 中使用 subprocess 查看 ${USER} 的值呢?

1 个回答

5

正如Wooble和dano所说,不要用subprocess来做这个。可以直接用 os.getenv("USER") 或者 os.environ["USER"] 来获取用户信息。

如果你真的想用 subprocess,那么 Popen(['bash', '-c', 'echo "$USER"'], ...) 这个方法可以用, Popen("echo $USER", shell=True) 也可以,不过这两种方法都不是特别好用(因为要在执行的命令行中使用环境变量,就必须用到shell,所以这点是无法避免的)。

补充:我之前提到的subprocess方法似乎没有正确工作。我觉得我最开始的测试有问题。

撰写回答