Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python脚本为linux环境添加$PATH_Python_Linux - Fatal编程技术网

使用python脚本为linux环境添加$PATH

使用python脚本为linux环境添加$PATH,python,linux,Python,Linux,需要将此路径-->/home/ubuntu/folderA添加到linux ubuntu中的my path环境变量中 更新 print(os.environ["PATH"]) path = "/home/ubuntu/folderA" os.environ["PATH"] += os.pathsep + path print(os.environ["PATH"]) #Can see the newly added path here when i print 但是,我仍然无法访问路径 当我

需要将此路径-->/home/ubuntu/folderA添加到linux ubuntu中的my path环境变量中

更新

print(os.environ["PATH"])

path = "/home/ubuntu/folderA"
os.environ["PATH"] += os.pathsep + path

print(os.environ["PATH"])
#Can see the newly added path here when i print
但是,我仍然无法访问路径

当我执行
printenv
时,仍然看不到路径

已尝试
os.getenv(“PATH”)
查看路径是否已更新,但仍然是相同的

如果使用以下命令手动执行,然后使用
printenv
,则路径就在那里

export PATH=$PATH:/home/ubuntu/folderA
我需要的是使用python脚本中的第一个方法更新路径,然后继续使用我的其余方法

希望有人能看看。多谢各位


最后一个更新:结果是在运行python脚本时追加了路径。只是在脚本完成后,路径将不会持久。因此,当我执行
printenv
时,路径不会显示。

您可以使用
os.environ[“path”]


检查此项以获得想法。

您可以使用
os.environ[“PATH”]

检查此项以获得想法。

系统路径
属于类型
列表
。因此,您应该使用内置的
append()
方法添加
字符串

import sys
sys.path.append("/home/ubuntu/folderA")

要更新当前用户的path变量,请使用os.environ['path']

需要注意的一点是,path变量是一个字符串对象,在循环中更新它将消耗内存。如果要从列表中更新,请使用以下方法

# os.pathsep is the character that separates different paths in the path variable
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
系统路径
属于类型
列表
。因此,您应该使用内置的
append()
方法添加
字符串

import sys
sys.path.append("/home/ubuntu/folderA")

要更新当前用户的path变量,请使用os.environ['path']

需要注意的一点是,path变量是一个字符串对象,在循环中更新它将消耗内存。如果要从列表中更新,请使用以下方法

# os.pathsep is the character that separates different paths in the path variable
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)

这是因为在类Unix系统上,每个进程的环境都是唯一的

当您运行脚本时,操作系统会将当前环境变量复制到新环境中。在新环境中,脚本修改PATH变量。脚本退出后,该环境将被破坏

试着运行这个来看看我在说什么:

path = "/home/ubuntu/folderA"
os.environ["PATH"] += os.pathsep + path
print(os.environ["PATH"])
os.system('printenv')
您应该看到修改后的PATH变量

如果要为进一步的进程修改PATH变量,必须执行以下操作之一

  • 从脚本中启动bashshell。使用
    os.system('bash')
    这将启动一个子shell进程,该进程将从脚本中继承PATH变量

  • 首选的方法是将脚本更改为如下内容

     path = "/home/ubuntu/folderA"
     print('export PATH=' + os.environ["PATH"] += os.pathsep + path)
    
     eval $(python path.py)
    
    然后像这样执行脚本

     path = "/home/ubuntu/folderA"
     print('export PATH=' + os.environ["PATH"] += os.pathsep + path)
    
     eval $(python path.py)
    
    这将在启动脚本的shell中获得修改后的路径。请注意,在Windows类型的系统上,情况完全不同


  • 这是因为在类Unix系统上,每个进程的环境都是唯一的

    当您运行脚本时,操作系统会将当前环境变量复制到新环境中。在新环境中,脚本修改PATH变量。脚本退出后,该环境将被破坏

    试着运行这个来看看我在说什么:

    path = "/home/ubuntu/folderA"
    os.environ["PATH"] += os.pathsep + path
    print(os.environ["PATH"])
    os.system('printenv')
    
    您应该看到修改后的PATH变量

    如果要为进一步的进程修改PATH变量,必须执行以下操作之一

  • 从脚本中启动bashshell。使用
    os.system('bash')
    这将启动一个子shell进程,该进程将从脚本中继承PATH变量

  • 首选的方法是将脚本更改为如下内容

     path = "/home/ubuntu/folderA"
     print('export PATH=' + os.environ["PATH"] += os.pathsep + path)
    
     eval $(python path.py)
    
    然后像这样执行脚本

     path = "/home/ubuntu/folderA"
     print('export PATH=' + os.environ["PATH"] += os.pathsep + path)
    
     eval $(python path.py)
    
    这将在启动脚本的shell中获得修改后的路径。请注意,在Windows类型的系统上,情况完全不同


  • sys.path
    不是
    path
    环境变量,环境变量是进程的本地变量。您所说的“我的脚本仍然无法找到新添加的路径”是什么意思?请提供一个。您是否使用一个python脚本来添加路径,使用另一个脚本来访问添加的路径?还请详细说明您试图完成的任务@ssokhey我尝试只使用一个脚本添加路径,使用同一个脚本访问添加的路径。
    sys.path
    不是
    path
    环境变量,环境变量是进程的本地变量。你说的“我的脚本仍然找不到新添加的路径”是什么意思?请提供一个。您是否使用一个python脚本来添加路径,使用另一个脚本来访问添加的路径?还请详细说明您试图完成的任务@ssokhey我试图只使用一个脚本来添加路径,并使用相同的脚本来访问添加的路径。我不是向下投票人,但OP询问的是环境变量
    $path
    ,而不是
    sys.path
    。我不是向下投票人,但OP询问的是环境变量
    $path
    ,而不是
    sys.path