获取脚本所在目录
我正在编写一个 Tcl 脚本,我想获取保存脚本的目录(不是当前目录,所以 $env(PWD)
不是我想要的想)。
这可能吗?
I'm writing a Tcl script, and I want to get the directory where the script is saved (Not the current dir, so $env(PWD)
is not what I want).
Is that possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
当直接执行脚本时,您可以使用:
此必须在脚本的顶层或
命名空间eval
内运行(您应该在其中使用variable<出于技术原因,使用 /code> 而不是
set
)。特别是,它不应该放置在过程中并稍后调用,因为此时info script
调用将返回其他内容。因此,典型的包实现脚本可能如下所示:如果这是主应用程序,您还可以使用
$::argv0
代替info script
。这在代码运行过程中不会改变(除非您手动设置它)。When the script is executing directly, you use:
This must be run at the top level of the script or inside a
namespace eval
(where you should usevariable
instead ofset
for technical reasons). In particular, it should not be placed inside a procedure and invoked later because by that point theinfo script
call will return something else. Thus, a typical package implementation script might look like this:If this is the main application, you can also use
$::argv0
in place ofinfo script
. That will not change throughout the run of your code (unless you manually set it).使用 信息脚本 与 文件目录名
Use info script combined with file dirname
我对 tcl 不太了解(不再)
你会得到脚本名称
$argv0
我只需应用函数/实用程序
realpath
,然后dirname
获取其目录I'm not very much up to speed with tcl (anymore)
You'd get the script name as
$argv0
I'd simply apply the functions/utilities
realpath
followed bydirname
to get it's directory如果您通过相对符号链接调用脚本,则无法可靠地工作。我用它来缓解可能的问题:
won't work reliably if you call a script through a relative symlink. I use this to mitigate possible problems: