在 Linux Shell 中,如何获取执行脚本的绝对路径?
在 Linux Shell 中,可以使用一些变量和命令来获取当前执行脚本的绝对路径
使用 $0 变量和 readlink 命令:
bashCopy code #!/bin/bash # 获取脚本所在目录的绝对路径 script_dir=$(dirname $(readlink -f $0)) echo "脚本所在目录: $script_dir"
在这个示例中:
- $0 代表当前脚本的名称(包括路径)
- readlink -f $0 用于获取脚本的绝对路径
- dirname 用于提取路径部分
示例:
创建如下的脚本,在不同的位置,以不同的方式执行
[root@nccztsjb-node-23 python3.11]# cat env.sh #!/bin/bash # 获取脚本所在目录的绝对路径 script_dir=$(dirname $(readlink -f $0)) echo "脚本所在目录: $script_dir" [root@nccztsjb-node-23 python3.11]#
[root@nccztsjb-node-23 python3.11]# sh env.sh 脚本所在目录: /root/python3.11 [root@nccztsjb-node-23 python3.11]# cd [root@nccztsjb-node-23 ~]# sh /root/python3.11/env.sh 脚本所在目录: /root/python3.11 [root@nccztsjb-node-23 ~]# cd /root [root@nccztsjb-node-23 ~]# sh python3.11/env.sh 脚本所在目录: /root/python3.11 [root@nccztsjb-node-23 ~]# cd python3.11/ [root@nccztsjb-node-23 python3.11]# sh env.sh 脚本所在目录: /root/python3.11 [root@nccztsjb-node-23 python3.11]#
在任何的路径,以绝对路径,相对路径执行的方式,都可以获得正确的脚本的绝对路径。