在fish shell脚本中,是否可以获取shell脚本所在的路径?在bash中,您可以使用BASH_SOURCE变量来执行此操作。
答案 0 :(得分:9)
一种方法是使用status命令。
例如
~/tmp> echo status -f > show_filename.fish
~/tmp> fish show_filename.fish
/home/foo/tmp/show_filename.fish
-
啊,对不起 - 根据你的评论判断,我误解了这个问题。我认为你的意思是完全限定的路径,而不是脚本的目录。
您可以将状态结果发送到dirname。这不是鱼的内置功能,就像状态一样,但鱼往往会尽可能多地外包这种功能(参见“极简主义法则”,鱼类design doc)。我在文档中看不到任何更好的命令,所以也许这就像我们现在可以得到的一样好?
修改示例,将show_filename.fish的内容更改为:
dirname (status -f)
现在你应该得到:
~/tmp> fish show_filename.fish
/home/foo/tmp