Fish脚本可以告诉它存储在哪个目录中吗?

Oli*_*alo 12 fish

所以,我真的很喜欢Fish - 但我需要一些脚本帮助.特别是找到正在运行的脚本的路径.

以下是BASH的解决方案 从内部获取Bash脚本的源目录

任何人都可以帮我找到与鱼相当的东西吗?

rid*_*ish 21

status --current-filename 将输出当前正在执行的脚本的路径.

有关status命令的更多信息,您可以运行man status或查看http://fishshell.com/docs/current/commands.html#status上的文档.

  • 这会打印出文件的完整路径.要获取存储脚本的目录的完整路径,请使用`dirname(status --current-filename)`. (2认同)
  • 回答自己:`dirname(readlink -m(status --current-filename))` (2认同)

小智 8

在鱼壳中,

set DIR (cd (dirname (status -f)); and pwd) 
Run Code Online (Sandbox Code Playgroud)

相当于BASH一个衬垫

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
Run Code Online (Sandbox Code Playgroud)

Can a Bash脚本中提到它告诉它存储在哪个目录中?.


Lim*_*eth 5

文件路径

要获取脚本的完整路径,请使用status --current-filenameset FILE (status --current-filename)声明一个变量。

目录路径

要获取存储脚本的目录的完整路径,请使用dirname (status --current-filename),或set DIR (dirname (status --current-filename))声明一个变量。

这个问题的等价物如下:

set DIR (dirname (status --current-filename)) 是等价的


小智 1

由于readlink -mmacOS 上不存在,

DIR=dirname (realpath (status -f))

同时适用于macOSLinux 。
该解决方案还具有可以从 .sh 文件甚至命令行工作的优点。