Я добавил эту строку в мой ~/.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.
Просто используйте BASH_SOURCE
вместо $0
:
realpath ${BASH_SOURCE}
в Вашем сценарии:
REAL=$(realpath ${BASH_SOURCE})
Когда Вы получаете сценарий Bash, $0
не будет содержать название Вашего полученного сценария, но исполняемого файла Bash.
Необходимо считать значение $BASH_SOURCE
вместо этого, так, чтобы полный путь к каталогу Вашего сценария был бы
SCRIPT_DIR="$(realpath "$(dirname "$BASH_SOURCE")")"
Похожие страницы: выбор между 0$ и BASH_SOURCE (Переполнение стека)