“如何使用python”;登录shell“;加上;打电话;?
我尝试使用python在大型计算机集群上调用环境定义的函数 根据我的理解,这些失败是由于登录shell和非登录shell之间的差异(即运行不同的初始化脚本)。“如何使用python”;登录shell“;加上;打电话;?,python,shell,call,subprocess,Python,Shell,Call,Subprocess,我尝试使用python在大型计算机集群上调用环境定义的函数 根据我的理解,这些失败是由于登录shell和非登录shell之间的差异(即运行不同的初始化脚本)。 虽然我可以尝试直接使用别名函数(虽然初始尝试不适用于我的特定情况),但我更愿意一般性地加载必要的文件,使“登录shell”成为python调用函数中使用的“登录shell” 我试过这样的方法: call("sh /etc/profile;sh $HOME/.bash_profile; MY COMMAND", shell=True )
虽然我可以尝试直接使用别名函数(虽然初始尝试不适用于我的特定情况),但我更愿意一般性地加载必要的文件,使“登录shell”成为python调用函数中使用的“登录shell” 我试过这样的方法:
call("sh /etc/profile;sh $HOME/.bash_profile; MY COMMAND", shell=True )
但这不起作用 配置文件应通过
或源文件
命令读取
使用sh
执行概要文件会导致子shell执行这些文件。设置子shell的环境变量不会影响父shell
call(". /etc/profile;. $HOME/.bash_profile; MY COMMAND", shell=True )
您可以使用命令行强制登录shell
-sh -c "MY COMMAND"
在shell名称前面加上
-
将其作为登录shell调用,而不是普通shell。它不起作用,因为您正在子进程(sh
)中运行/etc/profile
,该子进程在下一个命令启动之前关闭。使用source
()可以让命令在同一进程中运行MY command
将运行。