相关疑难解决方法(0)

shell脚本中的全局环境变量

如何在bash脚本中设置全局环境变量?

如果我喜欢的话

#!/bin/bash
FOO=bar
Run Code Online (Sandbox Code Playgroud)

...要么

#!/bin/bash
export FOO=bar
Run Code Online (Sandbox Code Playgroud)

... vars似乎停留在本地环境中,而我希望在脚本执行完毕后继续使用它们.

shell scripting environment-variables

81
推荐指数
3
解决办法
13万
查看次数

如何自定义 virtualenv shell 提示

您如何定义在激活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)

但提示没有变化。我究竟做错了什么?


python bash virtualenv

5
推荐指数
1
解决办法
5114
查看次数

在调用 shell 时设置环境变量的最佳方法

我正在编写一个需要能够设置和使用上下文的实用程序。我希望它在 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>)。
  • 保存到一个临时文件,其名称基于 shell 的 PID。这在大多数情况下都可以工作,但删除文件不会自动发生,因此它可能会一直存在直到重新启动(即,可能在许多机器上永远存在)。

还有其他想法吗?谢谢!

注意:以上示例使用 BASH 语法,但在大多数 shell 中都有等价物。

linux shell environment environment-variables

3
推荐指数
1
解决办法
1738
查看次数