Shell获取脚本所在目录

我们可能在写脚本的时候需要指定脚本文件的目录,但是如果用批量管理工具如SaltStack,执行脚本不能切换目录,脚本文件需要指定绝对路径,并且要求不管脚本文件放到哪个目录下都可以正常运行,这个时候我们需要怎么做呢?

示例:

shell
├── install.sh
├── logstash-1.4.2.tar.gz
├── shipper.conf
└── start.sh

0 directories, 4 files

install.sh脚本文件中调用了start.sh文件,如何能够获取start.sh文件的路径并正确执行呢?

获取脚本所在文件夹名称PWD=$(dirname `readlink -f "$0"`)/

install.sh脚本是这样的

#!/bin/bash
PWD=$(dirname `readlink -f "$0"`)/
tar zxvf $PWD"logstash-1.4.2.tar.gz" -C /usr/local/
ln -s /usr/local/logstash-1.4.2 /usr/local/logstash
mkdir /usr/local/logstash/conf
mkdir /usr/local/logstash/logs
cp $PWD"shipper.conf" /usr/local/logstash/conf/
touch /usr/local/logstash/logs/stdout.log
bash $PWD"startlogstash.sh"

大功告成

Loading Disqus comments...
Table of Contents