在bash中,我可以设置一个环境变量,只在第一次访问时执行命令吗?

In bash, can I set an environment variable that executes a command only the first time it's accessed?

基本上我想做类似

的事情
export PWD=$(run pwd the first time this environment variable is accessed, 
store the value, 
reuse that value for each subsequent access)

如果它是 shell 特定的,请尝试将其放入 .bashrc;,如果不是,请将其放入 .profile。还要确保将 [[ $- != *i* ]] && return 放在 .bashrc 的顶部。如果你能说出你想怎么用就更清楚了。

我带你去问一个变量,它的值是通过第一次执行命令来确定的 read,然后缓存该值以供后续读取。

不,你不能那样做。变量的值仅在分配时建立,而不是在读取时建立。您可以使用 shell 函数(和支持变量)做类似的事情,但是:

my_pwd() {
  if [[ -z "$_saved_pwd" ]]; then
    export _saved_pwd=$(pwd)
  fi
  echo "${_saved_pwd}"
}
export -f my_pwd

有了它,my_pwd 命令将执行 pwd 并在第一次运行时存储结果。每次运行时,它都会输出第一个 pwd 命令的结果。这可能直接满足您的目的,或者您也可以通过 $(my_pwd).

捕获结果用于其他用途