昨天遇到的问题，本来要把“../..”这样的相对路径改成“$ROOT/dir”这样的路径，于是就做了一个单行 Perl 命令行。 perl -p -i -e "s/\.\.\/\.\./\$\(ROOT\)\/dir/g" * 结果，C Shell 报错。 Variable name must contain alphanumeric characters. 很明显，C Shell 把 $ 符号作为环境变量的起始，试图用环境变量替换 $ 后面的部分。但是，我只是单纯地要 $ 出现在命令中而已，并不需要替换环境变量。 后来，搜了一下，要写成这样才可以。 perl -p -i -e "s/\.\.\/\.\./\\"'$'"\(ROOT\)\/dir/g" * 唉，伟大万能的 linux，就这么一个 $ 符号让我浪费了三个小时……