我把这行添加到我的~/.bashrc
. /mnt/c/Users/enzo/drive/projects/dotfiles/init.sh
在 init.sh 中我试图获取路径init.sh
但无法获取。
我到目前为止尝试过:
CURDIR=`/bin/pwd`
BASEDIR=$(dirname $0)
ABSPATH=$(readlink -f $0)
ABSDIR=$(dirname $ABSPATH)
REAL=$(realpath $0)
echo "CURDIR is $CURDIR"
echo "BASEDIR is $BASEDIR"
echo "ABSPATH is $ABSPATH"
echo "ABSDIR is $ABSDIR"
echo "REAL is $REAL"
输出:
CURDIR is /mnt/c/Users/enzo
BASEDIR is /bin
ABSPATH is /bin/bash
ABSDIR is /bin
REAL is /bin/bash
我在 Linux 的 Windows 子系统下。
答案1
只需使用BASH_SOURCE
而不是$0
:
realpath ${BASH_SOURCE}
在你的脚本中:
REAL=$(realpath ${BASH_SOURCE})
答案2
当你来源Bash 脚本$0
不会保存源脚本的名称,而是保存 Bash 可执行文件的名称。
您应该读取的值$BASH_SOURCE
,这样脚本目录的绝对路径将是
SCRIPT_DIR="$(realpath "$(dirname "$BASH_SOURCE")")"