这个示例将脚本的当前目录存储在mydir中,它在变量赋值前后(即使调用了cd)回送相同的目录,这使我认为命令替换不会影响shell的状态。所有命令替换都是这样吗?#! /bin/bash echo "$PWD" MYDIR="$( cd "$( dirname "$0" )" && pwd )" echo "$PWD" 最佳答案 实际上,命令替换是在子shell中执行的。它们无法更改父进程的环境。