我想获得Bash脚本的路径,当它通过符号链接执行时。
在这种情况下,$0是-bash,而BASH_SOURCE是符号链接的路径。
我可以通过一些shell变量、内置shell命令或外部命令获得脚本的路径吗?
BASH_SOURCE是否总是保存初始符号链接的路径,即使脚本是通过多个间接(多个符号链接)执行的?
我可以使用ls和BASH_SOURCE始终检索脚本的路径吗?
发布于 2020-07-31 16:05:23
来自GNU的realpath或readlink -f可能会有所帮助:
$ ls -l foo.sh bar.sh whereami.sh
lrwxrwxrwx 1 ilkkachu ilkkachu 6 Jul 31 19:01 bar.sh -> foo.sh*
lrwxrwxrwx 1 ilkkachu ilkkachu 11 Jul 31 19:01 foo.sh -> whereami.sh*
-rwxr-xr-x 1 ilkkachu ilkkachu 36 Jul 31 19:02 whereami.sh*
$ cat whereami.sh
#!/bin/bash
echo "$BASH_SOURCE"
realpath "$BASH_SOURCE"
$ ./bar.sh
./bar.sh
/tmp/whereami.shhttps://unix.stackexchange.com/questions/602248
复制相似问题