用fish检索当前源文件的路径

发布于 2024-08-17 17:43:28 字数 77 浏览 6 评论 0原文

在fish shell脚本中,是否可以获得shell脚本所在的路径?在 bash 中,您可以使用 BASH_SOURCE 变量来执行此操作。

In a fish shell script, is it possible to obtain the path where the shell script lives? In bash, you can use the BASH_SOURCE variable to do this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空气里的味道 2024-08-24 17:43:28

一种方法是使用 status 命令。

例如。

~/tmp> echo status -f > show_filename.fish
~/tmp> fish show_filename.fish
/home/foo/tmp/show_filename.fish

-

啊,抱歉 - 从你的评论来看,我误解了这个问题。我以为你的意思是完全限定的路径,而不是脚本的目录。

您可以将状态结果发送到 dirname。它不像 status 那样是 Fish 的内置功能,但 Fish 倾向于尽可能多地外包此功能(请参阅 Fish 中的“极简主义法则”设计文档)。我在文档中看不到任何更好的命令,所以也许这就是我们现在能得到的最好的命令?

修改示例,将 show_filename.fish 的内容更改为:

dirname (status -f)

现在您应该得到:

~/tmp> fish show_filename.fish
/home/foo/tmp

One way is to use the status command.

eg.

~/tmp> echo status -f > show_filename.fish
~/tmp> fish show_filename.fish
/home/foo/tmp/show_filename.fish

--

Ah, sorry - judging by your comment, I misread the question. I thought you meant the fully qualified path, instead of the script's directory.

You could just send the status result to dirname. It's not a built-in function of fish, like status is, but fish tends to outsource as much of this functionality as it can anyway (see "The law of minimalism", over in the fish design doc). I can't see anything better commands in the docs for this, so maybe this is as good as we can get for now?

Amending the example, change the contents of show_filename.fish to be:

dirname (status -f)

Now you should get:

~/tmp> fish show_filename.fish
/home/foo/tmp
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文