为什么os.system("源/home/oracle/.bash_profile")不起作用

时间:2017-09-05 03:10:20

标签: python

[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
>>> 

为什么PATH不会改变?什么是0意思

1 个答案:

答案 0 :(得分:2)

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

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

虽然我会提醒您,但这不是推荐的运行外部程序的方法。使用subprocess是一个更好的主意,因为避免产生shell(子进程可以帮助你在那个区域)

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