この行を~/.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サブシステムの下にいます。
BASH_SOURCE
の代わりに$0
を使用するだけです:
realpath ${BASH_SOURCE}
あなたのスクリプトで:
REAL=$(realpath ${BASH_SOURCE})
Bashスクリプトをsourceすると、$0
はソーススクリプトの名前ではなく、Bash実行可能ファイルの名前を保持します。
代わりに$BASH_SOURCE
の値を読み取る必要があります。これにより、スクリプトのディレクトリへの絶対パスが
SCRIPT_DIR="$(realpath "$(dirname "$BASH_SOURCE")")"