2016-11-06 63 views
0

我目前正在学习unix,并且有关于设置临时环境路径的问题。我有以下脚本C,为脚本设置临时环境变量

///home/jason/Public/TestTempEnv.c 
putenv("PATH=$PATH:/home/jason/Public/:/home/jason/Private/"); 
system("register"); 

从我的理解,它会搜索“注册”在$ PATH从第一定义的路径开始定义的所有路径,从左到右。

但是,如果我有一个Python脚本,做以下,

import os 
os.system("export PATH=/home/lucy/:$PATH && /home/jason/Public/TestTempEnv") 

的Python脚本设置临时路径,然后调用TestTempEnv.c脚本,将里面TestTempEnv.c的最终路径收到/home/lucy/路径添加执行register

只是为了说明,我用命令编译C脚本,gcc TestTempEnv.c -o TestTempEnv

+1

间接回答:你可以使用strace命令来查看你的进程是干什么的,包括它用来查找东西的目录。 –

+1

你的问题是什么?即使python版本不是最pythonic,也不是非常便携,两种构造都可以工作。 –

+0

@ Jean-FrançoisFabre,我想知道如果我在C文件中的最终路径在执行“注册”之前添加了'/ home/lucy'。 –

回答

0

您可以使用execve的和精确的的环境变量: INT的execve(为const char * fichier,char * const的ARGV [],char * const envp []); 看到这个人