Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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设置环境_Python_Bash_Shell - Fatal编程技术网

使用Python设置环境

使用Python设置环境,python,bash,shell,Python,Bash,Shell,我们的环境有一个shell脚本来设置工作区设置。sh如下所示: export BASE_DIR=$PWD export PATH=$BASE_DIR/bin export THIS_VARIABLE=THAT_VALUE 用户执行以下操作: % . setup.sh 我们的一些用户正在寻找csh版本,这意味着有两个安装文件 我想知道是否有一种方法可以用一个普通的python文件来完成这项工作。在本文中,Kenneth Reitz建议在项目中使用setup.py文件,但我不确定Pyth

我们的环境有一个shell脚本来设置工作区<代码>设置。sh如下所示:

 export BASE_DIR=$PWD
 export PATH=$BASE_DIR/bin
 export THIS_VARIABLE=THAT_VALUE
用户执行以下操作:

 % . setup.sh
我们的一些用户正在寻找
csh
版本,这意味着有两个安装文件

我想知道是否有一种方法可以用一个普通的python文件来完成这项工作。在本文中,Kenneth Reitz建议在项目中使用
setup.py
文件,但我不确定Python是否可以像上面那样在shell中设置环境变量

我可以用做同样事情的python脚本替换这个shell脚本吗?我不知道怎么做

(还有其他一些问题提出了更广泛的问题,有很多评论,但这一个问题有一个直接的问题和一个直接的答案。)

不,Python(或者通常是类Unix平台上的任何进程)不能更改其父环境

一个常见的解决方案是让脚本以适合用户shell的格式打印输出。例如,
ssh代理
将打印出
sh
-与
-s
兼容的全局分配,或者当它看到正在从Bourne兼容的shell调用它时;如果从
csh
tcsh
调用,或使用
-c
显式调用,则为
csh
语法

兼容shell中的通常调用是
$(eval ssh agent)
——因此程序打印的文本由用户调用此命令的shell进行计算

eval
是一个众所周知的安全风险,因此您希望使此代码非常容易检查,即使对于不太会讲Python(或shell,或其他任何语言)的人也是如此

如果您对直接支持Csh用户持怀疑态度,那么您可以说服他们在Bourne兼容的shell中运行您的
sh
-兼容脚本,然后运行
exec Csh
,以获得他们首选的交互环境。这还避免了在支持Csh、Fish、
rc
、Powershell等用户时遇到越来越多的小维护难题的危险。

不,Python(或Unix类平台上的任何进程)无法更改其父环境

一个常见的解决方案是让脚本以适合用户shell的格式打印输出。例如,
ssh代理
将打印出
sh
-与
-s
兼容的全局分配,或者当它看到正在从Bourne兼容的shell调用它时;如果从
csh
tcsh
调用,或使用
-c
显式调用,则为
csh
语法

兼容shell中的通常调用是
$(eval ssh agent)
——因此程序打印的文本由用户调用此命令的shell进行计算

eval
是一个众所周知的安全风险,因此您希望使此代码非常容易检查,即使对于不太会讲Python(或shell,或其他任何语言)的人也是如此

如果您对直接支持Csh用户持怀疑态度,那么您可以说服他们在Bourne兼容的shell中运行您的
sh
-兼容脚本,然后运行
exec Csh
,以获得他们首选的交互环境。这也避免了为支持Csh、Fish、
rc
、Powershell等用户而面临越来越多的小维护挑战的滑坡。

可能重复的