在 Linux Shell 中,如何获取执行脚本的绝对路径?

发布时间 2023-08-18 16:08:13作者: Zhai_David

在 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]# 

 

在任何的路径,以绝对路径,相对路径执行的方式,都可以获得正确的脚本的绝对路径。