猿问

大佬们遇到过这个问题吗?Bash 怎样获得脚本所在的绝对路径?求解答!

目前题主采用的方法如下(绝对路径,排除所有软链接):
#!/bin/bash
SCRIPT_PATH=`cd"$(dirname"$0")";pwd-P`
echo${SCRIPT_PATH}
cd${SCRIPT_PATH}
这个方法存在下列问题:
路径不能包含非ASKII字符(例如:中文)
路径不能包含Bash特殊字符(例如:$、\)
路径不能包含空白(例如:空格、制表符)
请提供一种方法避免上述问题。
测试方法:
将修改下列脚本,然后放到这里:你的路径/中文English$/中文English$.sh。执行不报错。
最好能在Windows(WindowsSubsystemforLinux)、macOS和Linux上均做测试。
#!/bin/bash
#修改此处
#
#SCRIPT_PATH=
echo${SCRIPT_PATH}
cd${SCRIPT_PATH}
PS:用cd${SCRIPT_PATH}进行测试的原因是,确保${SCRIPT_PATH}可以安全地用作任意命令和脚本的参数。
米琪卡哇伊
浏览 443回答 2
2回答

胡说叔叔

试试这个吧,Windows上没试过(因为没有)#!/bin/shecho"$(cd"$(dirname"$1")";pwd-P)/$(basename"$1")"

慕丝7291255

用realpath也可以:SCRIPT=`realpath$0`SCRIPTPATH=`dirname$SCRIPT`如果不想追踪软连接,可以加-s参数:SCRIPT=`realpath-s$0`SCRIPTPATH=`dirname$SCRIPT`
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答