当我在 tcl 环境下工作时,一旦我 cd 到一个目录,即使我指定的路径是它的符号链接,那么无论我运行pwd -L还是pwd -P,它们都返回绝对路径。这对我来说很麻烦,因为我尝试用变量名替换用户特定的工作区路径,这样当不同的用户执行脚本时,他们将切换到自己的工作区。但是,系统 $::env(WORK) 返回路径的符号链接,而 pwd 命令返回绝对路径,因此我无法执行 sed 命令。
例如,
stcl> cd $::env(WORK)
stcl> puts [format "cd %s" [exec echo [pwd] | sed "s,$::env(WORK),\$WORK,g"]]
我想要代码做的是打印“cd $WORK”,但是因为 pwd 返回绝对路径,即使我使用 pwd -L,我也无法与 sed 命令匹配,因此无法替换字符串。
看起来 Tcl 没有让您对 cd 和 pwd 进行任何控制。
另一种选择:解析 WORK env var 中的符号链接,并将其与 pwd 进行比较: