# 典型错误 流传`dirname $0`可以获得当前脚本所在目录,实际上是错误的。 在用户的bin目录下新建测试脚本`mytest.sh`: ```bash [yz@bogon ~]$ pwd /home/yz [yz@bogon ~]$ cd bin/ [yz@bogon bin]$ pwd /home/yz/bin [yz@bogon bin]$ vim mytest.sh ``` 注意:`/home/yz/bin`已经加入了`$PATH`环境变量。 `mytest.sh`内容如下: ```bash mydir=$(cd "$(dirname "$0")"; pwd) echo "dir: $mydir" ``` 我们执行以下命令: ```bash [yz@bogon ~]$ cd / [yz@bogon /]$ bash mytest.sh dir: / ``` 显然,输出结果不符合预期。 # 正确方法 修改`mytext.sh`: ```bash mydir=$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd) #mydir=$(cd "$(dirname "$0")"; pwd) echo "dir: $mydir" ``` 执行结果符合预期: ```bash [yz@bogon ~]$ cd / [yz@bogon /]$ bash mytest.sh dir: /home/yz/bin ```