EnZ*_*nZo 3 command-line bash scripts paths windows-subsystem-for-linux
我将此行添加到我的 ~/.bashrc
. /mnt/c/Users/enzo/drive/projects/dotfiles/init.sh
Run Code Online (Sandbox Code Playgroud)
并且在 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"
Run Code Online (Sandbox Code Playgroud)
输出:
CURDIR is /mnt/c/Users/enzo
BASEDIR is /bin
ABSPATH is /bin/bash
ABSDIR is /bin
REAL is /bin/bash
Run Code Online (Sandbox Code Playgroud)
我在 linux 的 windows 子系统下。
只需使用BASH_SOURCE而不是$0:
realpath ${BASH_SOURCE}
Run Code Online (Sandbox Code Playgroud)
在你的脚本中:
REAL=$(realpath ${BASH_SOURCE})
Run Code Online (Sandbox Code Playgroud)
当您采购一个bash脚本,$0将不会持有你的执行的脚本的名称,但bash可执行文件的。
您应该改为读取的值$BASH_SOURCE,以便脚本目录的绝对路径为
SCRIPT_DIR="$(realpath "$(dirname "$BASH_SOURCE")")"
Run Code Online (Sandbox Code Playgroud)
相关:在 $0 和 BASH_SOURCE 之间进行选择(堆栈溢出)
| 归档时间: |
|
| 查看次数: |
3161 次 |
| 最近记录: |