![]() |
1
31
你不能从Python中完成,但是一些聪明的bash技巧可以完成类似的工作。基本的推理是:环境变量存在于每个进程的内存空间中。使用fork()创建新进程时,它继承其父进程的环境变量。当您在shell(例如bash)中设置环境变量时,如下所示:
您要做的是告诉bash将其进程空间中的变量var设置为“foo”。运行程序时,bash使用fork()然后exec()来运行程序,因此从bash运行的任何内容都继承bash环境变量。 现在,假设您想要创建一个bash命令,该命令使用当前目录中名为“.data”的文件中的内容设置一些环境变量数据。首先,您需要有一个命令来从文件中获取数据:
打印数据。现在,我们要创建一个bash命令来在环境变量中设置该数据:
该命令获取.data的内容并将其放入环境变量数据中。现在,如果您将它放在alias命令中,那么您就有了一个bash命令,用于设置环境变量:
您可以将该别名命令放入主目录中的.bashrc或.bash_概要文件中,以便在启动的任何新bash shell中都可以使用该命令。 |
![]() |
2
17
一个解决方法是输出
…和bash别名(在大多数shell中也可以这样做..甚至TCSH!:
用途:
您可以输出任意shell代码,包括多个命令,如:
记住要小心转义任何动态创建的输出
|
![]() |
3
3
如果在Python脚本(或任何其他脚本或程序)中设置环境变量,它不会影响父shell。 编辑澄清: 所以你的问题的答案是,是真的。 但是,您可以从shell脚本中导出,并使用点调用对其进行源代码调用。 在FooExpP.SH中
在命令提示下
|
![]() |
4
2
我喜欢在shell脚本中使用/usr/bin/env在我发现自己处于类似情况时“包装”命令行:
所以让我们称这个脚本为“myappenv”。我把它放在$home/bin目录中,这是我的$path目录。 现在,我可以使用该环境调用任何命令,只需在“myappenv”前面加上以下内容:
其他张贴的解决方案也可以,但这是我个人的偏好。一个优点是环境是暂时的,所以如果我在shell中工作,那么只有我调用的命令会受到更改后的环境的影响。 基于新评论的修改版本
你也可以用别名把这些都包装起来。我更喜欢包装脚本的方法,因为我倾向于在那里有其他的环境准备,这使我更容易维护。 |
![]() |
5
1
一般不可能。为python创建的新进程不能影响其父进程的环境。父级也不能影响子级,但父级可以将子级的环境设置为新进程创建的一部分。
也许你可以把它们放进去
您还可以让Python使用所需的环境启动模拟程序。(使用
或者让python把这样的shell脚本写到一个文件中,
然后
|
![]() |
6
0
正如Benson所回答的,但最好的方法是创建一个简单的bash函数来保存参数:
在Python脚本中,您可以使用参数执行任何操作。要简单地添加变量,请使用如下内容:
用途:
|
![]() |
Axel Kennedal · Redux持续立即崩溃 7 年前 |
![]() |
Rougher · Spark持久化函数在数据集重用中的应用 7 年前 |
![]() |
Araf · 当我尝试插入通知类型对象时,子实体也尝试插入 7 年前 |
![]() |
gschambial · 尝试级联持久子实体时出现持久异常 7 年前 |
![]() |
juliam · JSON在发布对象时递归调用该对象 7 年前 |
![]() |
Pj- · 搁置模块不适用于“with”语句 7 年前 |
![]() |
Dmitry Senkovich · JPA中的事务同步与事务关联 7 年前 |