将 bash shell 变量设置为 pwd

将 bash shell 变量设置为 pwd

我正在尝试将 shell 变量设置为 $PWD - 执行脚本的路径。这就是我所拥有的,setenv.sh:

#!/bin/bash
export WORK_AREA=$PWD      #also tried "$PWD", $(pwd), `pwd`

但是当我从 shell 中运行时

> ./setenv.sh
> echo $WORK_AREA

WORK_AREA 没有值

答案1

export“向下”工作,而不是“向上”工作。当您在作为 shell 子级的脚本中导出值时,它不会将其导出到作为其父级的 shell。它只会改变自己孩子的环境。

答案2

如果您希望脚本影响当前的 shell 环境,则需要获取脚本的来源,例如:

source setenv.sh

或者,使用点表示法:

. setenv.sh

当您执行脚本时,它会在子 shell 中运行,就像您使用命令运行它一样bash。子 shell 环境的更改不会影响父环境。请注意,我们在这里只讨论环境变量。如果您在子 shell 中修改文件,那么该更改肯定会传递到父 shell。

请参阅相关的超级用户帖子:

相关内容