【获取shell脚本文件的全路径】涉及的知识点
$0是当前执行脚本的名称。
dirname $0 是当前执行脚本的父目录(相对路径,仍然不是全路径)
真正读取全路径的方法:
base_dir= ( c d " (cd " (cd"(dirname “$0”)";pwd) 则是 切换工作目录到脚本父目录下,然后pwd,返回当前脚本父目录。如果不cd,按照fork的特性,就会继承父进程的work directory.
这里有个好处就是我们在 $()里面执行shell script,也就是在子进程里改变了work-dir。因此当前进程的work-dir不会被改变。这个正合我们的意图,我是仅仅只是想获得脚本的全路径,虽然我们是通过工作空间来获取全路径,但我们原则上不能改变当前进程的work-dir.
cd的目的是为了通过切换工作空间来获得绝对路径。
$()是创建子进程执行命令并返回stdout结果。