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

Lor*_*ein 8 fish

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

oth*_*rps 9

一种方法是使用status命令.

例如.

~/tmp> echo status -f > show_filename.fish
~/tmp> fish show_filename.fish
/home/foo/tmp/show_filename.fish
Run Code Online (Sandbox Code Playgroud)

-

啊,对不起 - 根据你的评论判断,我误解了这个问题.我认为你的意思是完全限定的路径,而不是脚本的目录.

您可以将状态结果发送到dirname.这不是鱼的内置功能,就像状态一样,但鱼往往会尽可能多地外包这种功能(参见鱼类设计文档中的"极简法则" ).我在文档中看不到任何更好的命令,所以也许这就像我们现在可以得到的一样好?

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

dirname (status -f)
Run Code Online (Sandbox Code Playgroud)

现在你应该得到:

~/tmp> fish show_filename.fish
/home/foo/tmp
Run Code Online (Sandbox Code Playgroud)