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"
大功告成