关于实际/符号路径的 tcl cd/pwd 命令

关于实际/符号路径的 tcl cd/pwd 命令

当我在tcl环境下工作时,一旦我 cd 到一个目录,即使我指定的路径是它的符号链接,那么无论我是否运行密码-L或者密码-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 命令匹配,因此无法替换字符串。

答案1

看起来 Tcl 不给你对 cd 和 pwd 的任何控制权。

另一种方法:解析 WORK 环境变量中的符号链接,然后进行比较致密码:

format {cd "%s"} [expr {[pwd] eq [file normalize $::env(WORK)] ? {$WORK} : [pwd]}]

相关内容