Bash脚本:了解在Unix或者Linux下存储在什么目录脚本中
时间:2020-01-09 10:45:52 来源:igfitidea点击:
如何找到bash shell脚本所在目录的路径并将该路径存储在_base变量中?您需要使用以下各项的组合:
readlink
显示符号链接或者规范文件名的值。
这是获取符号链接目标的安全方法。
${BASH_SOURCE [0]}
或者$0
Shell脚本文件的名称存储在$0或者${BASH_SOURCE [0]}中
请注意,以下示例仅在Debian Linux上运行的Bash shell上进行了测试。
此代码可能无法移植,并且可能在其他Linux发行版/Unix等操作系统上中断。
例子
创建一个shell脚本,如下所示:
#!/bin/bash # Name: /tmp/demo.bash : # Purpose: Tell in what directory$ chmod +x /tmp/demo.bash $ /tmp/demo.bashis stored in # Warning: Not tested for portability # ----------------------------------------------- ## who am i? ## _script="$(readlink -f ${BASH_SOURCE[0]})" ## Delete last component from $_script ## _base="$(dirname $_script)" ## Okay, print it ## echo "Script name : $_script" echo "Current working dir : $PWD" echo "Script location path (dir) : $_base"
保存并关闭文件。
如下运行:
Script name : /tmp/demo.bash Current working dir : /home/Hyman Script location path (dir) : /tmp
输出示例:
$ cd ~ $ /tmp/demo.bash
光盘到/home/Hyman
Script name : /tmp/demo.bash Current working dir : /home/Hyman Script location path (dir) : /tmp
输出示例:
$ ../../tmp/demo.bash
如下运行:
Script name : /tmp/demo.bash Current working dir : /home/Hyman Script location path (dir) : /tmp
输出示例:
$ cd ~ $ ln -s /tmp/demo.bash $ ./demo.bash $ rm demo.bash
最后,在/home/Hyman中创建一个符号链接并对其进行测试:
Script name : /tmp/demo.bash Current working dir : /home/Hyman Script location path (dir) : /tmp
输出示例:
##代码##