有时候,出于方便,需要给某些第三方软件编写启动脚本。这些第三方软件可能打包了自己所需要的库,只有通过相对路径才能访问这些库。这就需要在启动脚本中探测软件的根目录,使得可以从系统中的任何位置运行命令而不会找不到运行库。
以Pharo为例,Pharo需要在命令行中传递 image 参数:
#!/bin/bash
DIR=$(dirname $(readlink -f $0))
PHARO="$DIR/pharo-ui"
IMAGE="Pharo.image"
exec $PHARO $DIR/$IMAGE $@
readlink -f $0
可以正确处理软链接,哪怕脚本被链接到其它位置,它也能获得脚本真实的位置。
最后的 $@
参数将所有的命令行参数全部传递给原始程序。