如何在bash脚本中设置全局环境变量?
如果我喜欢的话
#!/bin/bash
FOO=bar
Run Code Online (Sandbox Code Playgroud)
...要么
#!/bin/bash
export FOO=bar
Run Code Online (Sandbox Code Playgroud)
... vars似乎停留在本地环境中,而我希望在脚本执行完毕后继续使用它们.
您如何定义在激活Python 虚拟环境时使用的自定义提示?
我有一个 bash 脚本,用于激活调用特定Fabric命令时使用的 virtualenv 。我希望 shell 提示说类似“(fab)”这样的东西,这样我就可以很容易地将它与我打开的其他 shell 区分开来。按照这个例子,我试过:
#!/bin/bash
script_dir=`dirname $0`
cd $script_dir
/bin/bash -c ". .env/bin/activate; PS1='(fab) '; exec /bin/bash -i"
Run Code Online (Sandbox Code Playgroud)
但提示没有变化。我究竟做错了什么?
我正在编写一个需要能够设置和使用上下文的实用程序。我希望它在 shell 中使用环境变量,以便它可以记住当前在调用之间所处的上下文。理想情况下,我想从实用程序本身设置这个环境变量。就像是:
mytool set-context <context>
mytool do-stuff # Aware of <context>
Run Code Online (Sandbox Code Playgroud)
我希望它的行为如下:
export MYTOOL_CONTEXT=<context>
mytool do-stuff # Aware of <context>
Run Code Online (Sandbox Code Playgroud)
现在,程序实际上不可能在调用 shell 的环境中设置环境变量(在 SO here 中有介绍)。但是,这就是我想要的行为,我正在寻找近似值或解决方法。
我想到的一些想法:
<context>,而是设置为从它派生的某个字符串)。那看起来像export MYTOOL_CONTEXT=$(mytool get-context-var <context>).$(mytool set-context <context>),命令的输出实际执行的地方(输出类似于export MYTOOL_CONTEXT=<context>)。还有其他想法吗?谢谢!
注意:以上示例使用 BASH 语法,但在大多数 shell 中都有等价物。