Jon*_*ant 2 shell bash environment-variables
当我运行时PATH=abc:$PATH echo $PATH
,我得到的是旧值PATH
,而不是abc:PATH
为什么是这样?我怎样才能得到abc:$PATH
?
PATH=/mybin:$PATH which python
编辑:如果/mybin
有 python 可执行文件怎么样?
当你跑步时
PATH=abc:$PATH echo $PATH
Run Code Online (Sandbox Code Playgroud)
或者,在更一般的情况下,
variable=value utility
Run Code Online (Sandbox Code Playgroud)
然后variable
在环境中设置utility
(但不是在当前环境中)。
但是,当解析命令行时,变量的值将从当前PATH
环境中获取。
您必须在变量扩展的环境中设置变量。您可以通过将其分为两个步骤来完成此操作,如
PATH=abc:$PATH; echo "$PATH"
Run Code Online (Sandbox Code Playgroud)
这将PATH
在当前环境中设置,然后执行echo "$PATH"
,或者为子 shell 设置变量,如
PATH=abc:$PATH sh -c 'echo "$PATH"'
Run Code Online (Sandbox Code Playgroud)
PATH
这将在 中设置变量sh -c
,但不在当前 shell 中。
在你的第二个例子中,
PATH=/mybin:$PATH which python
Run Code Online (Sandbox Code Playgroud)
该which
实用程序可能会说自从您在其环境中进行修改以来python
就找到了该实用程序。请注意,这里的 从未在当前环境中扩展,而是由./mybin
PATH
PATH
which
顺便说一句,which python
写得更好(更便携)command -v python
(参见“为什么不使用“which”?那么使用什么? ”)。
只是快速反思一下你的标题,你所说的“ENV
变量”。该ENV
变量,即使这不是您的意思,也恰好是某些实现sh
(以及其他一些 shell)使用的环境变量。如果其值是文件名,则将在启动交互式 shell 会话之前获取该文件。 bash
有一个BASH_ENV
变量,其工作方式相同,但适用于非交互式 shell。
归档时间: |
|
查看次数: |
242 次 |
最近记录: |