Как получить реальный путь sh файла, который получается

Я добавил эту строку в мой ~/.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.

3
задан 31 August 2018 в 13:56

2 ответа

Просто используйте BASH_SOURCE вместо $0:

realpath ${BASH_SOURCE}

в Вашем сценарии:

REAL=$(realpath ${BASH_SOURCE})
6
ответ дан 1 December 2019 в 13:03

Когда Вы получаете сценарий Bash, $0 не будет содержать название Вашего полученного сценария, но исполняемого файла Bash.

Необходимо считать значение $BASH_SOURCE вместо этого, так, чтобы полный путь к каталогу Вашего сценария был бы

SCRIPT_DIR="$(realpath "$(dirname "$BASH_SOURCE")")"

Похожие страницы: выбор между 0$ и BASH_SOURCE (Переполнение стека)

6
ответ дан 1 December 2019 в 13:03

Другие вопросы по тегам:

Похожие вопросы: