Bash查找当前执行的位置

时间:2013-01-24 03:07:14

标签: bash shell unix

我在目录中有一个shell程序(即dir1 / dothis.sh) - 当我cd到该目录并且./dothis.sh

时工作正常

如果我使用新名称创建一个ln到该directoy - dir2并执行dir2 / dothis.sh 它会执行,但它认为当前的执行路径是dir2指向

的新目录 在dothis.sh中的

- 如何找到dothis.sh实际所在的位置?我的问题是dir1 / dothis.sh可以从一个系统重新定位到系统,所以没有保证dir1 / dothis.sh可以是硬代码

3 个答案:

答案 0 :(得分:1)

使用内置的bash

#!/bin/bash
echo "Current path: $PWD"

答案 1 :(得分:0)

试试这个:

#!/bin/bash
echo $0
a=`pwd`
echo $a
b=$a"/"$0
echo `dirname $b`

答案 2 :(得分:0)

怎么样

dirname $(readlink -f $0)

如果有的话,它也会解析符号链接......