Bash 获取脚本目录的多种方法114


在 Bash 脚本中,获取脚本目录对于读取配置、加载数据或执行其他特定于目录的操作至关重要。本文将全面介绍在 Bash 中获取脚本目录的多种方法,包括使用内置命令、特殊变量和外部工具。

内置命令

1. cd -P


cd -P 命令将打印当前工作目录的绝对路径。它可以与重定向一起使用以保存脚本目录。```Bash
#!/bin/bash
# 使用 cd -P 命令获取脚本目录
SCRIPT_DIR=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
```

2. pwd -P


pwd -P 命令本身打印当前工作目录的绝对路径,因此不需要重定向。```Bash
#!/bin/bash
# 使用 pwd -P 命令获取脚本目录
SCRIPT_DIR=$(pwd -P)
```

特殊变量

3. $0


$0 特殊变量包含当前正在执行的脚本的文件名。它可以与 dirname 命令一起使用以获取脚本目录。```Bash
#!/bin/bash
# 使用 $0 特殊变量获取脚本目录
SCRIPT_DIR=$(dirname -- "$0")
```

外部工具

4. readlink -f


readlink -f 工具解析符号链接并打印目标文件的绝对路径。它可以与 basename 命令一起使用以获取脚本目录。```Bash
#!/bin/bash
# 使用 readlink -f 和 basename 命令获取脚本目录
SCRIPT_DIR=$(readlink -f "$0" | basename -- "$(dirname --) ")
```

5. which


which 工具搜索并打印命令的可执行文件的位置。它可以与 basename 命令一起用于以类似于 readlink -f 的方式获取脚本目录。```Bash
#!/bin/bash
# 使用 which 和 basename 命令获取脚本目录
SCRIPT_DIR=$(which -- "$0" | basename -- "$(dirname --) ")
```

相对路径

6. dirname -- "$0"


dirname -- "$0" 返回当前正在执行的脚本的文件路径,不包括文件名。它通常与 cd 命令结合使用以获取相对脚本目录。```Bash
#!/bin/bash
# 使用 dirname -- "$0" 获取相对脚本目录
cd "$(dirname -- "$0")"
# 现在,您可以在相对路径中使用 pwd 命令
PWD=$(pwd)
```

其他方法

7. awk


awk 是一个文本处理工具,可用于从命令行中提取信息。它可以用于解析 $0 特殊变量并获取脚本目录。```Bash
#!/bin/bash
# 使用 awk 获取脚本目录
SCRIPT_DIR=$(awk -F/ '{print $NF}'

2024-12-07


上一篇:Bash 脚本传参数:详解参数传递机制

下一篇:趣味无穷的 Bash 脚本