为什么操作系统系统("source /home/oracle/.bash_profile")不起作用


[root@izm5e8t6lxkk4uk1hn5639z ~]# python
Python 2.7.5 (default, Nov  6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.system("source /home/oracle/.bash_profile")
0
>>> os.system("echo $PATH")
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
0
>>> 

为什么路径不变?0的含义

,因为 os.system催生了一个外壳,它可以用 source命令设置自己的路径,然后立即退出。您可以设置路径,然后立即运行程序:

os.system("source /home/oracle/.bash_profile && your_command_here")

尽管我会警告您,但这不是运行外部程序的推荐方法。使用subprocess是一个更好的主意,避免产卵壳(子过程在该区域有帮助)

https://docs.python.org/2/library/subprocess.html#module-subprocess

最新更新