如何在 Bash 脚本中显示脚本名称367

# 命令行小技巧:在 Bash 脚本中显示脚本名称

在 Bash 脚本中,经常会需要显示当前脚本的名称。这在调试或记录脚本行为时非常有用。Bash 提供了几个内置变量和函数来实现这一目的。## 0. `$0` 变量

最简单的方法是使用 `$0` 变量。它包含脚本的完整路径名。例如,以下脚本显示其自身名称:```bash
echo "脚本名称:$0"
```
## 1. `basename` 命令

`basename` 命令可用于从路径名中提取文件名。例如,以下脚本使用 `basename` 显示其自身名称:```bash
echo "脚本名称:$(basename $0)"
```
## 2. `readlink` 命令

`readlink` 命令可用于解析符号链接并返回其目标。例如,以下脚本使用 `readlink` 显示其自身名称,即使它是一个符号链接:```bash
echo "脚本名称:$(readlink -f $0)"
```
## 3. `which` 命令

`which` 命令可用于查找命令的完整路径名。例如,以下脚本使用 `which` 显示其自身名称,即使它不在当前路径中:```bash
echo "脚本名称:$(which $0)"
```
## 4. `ps` 命令

`ps` 命令可用于显示正在运行的进程信息。例如,以下脚本使用 `ps` 显示其自身名称,以及其进程 ID:```bash
echo "脚本名称:$(ps -o comm= $PPID)"
```
## 5. `__FILE__` 变量 (仅限 Bash 4+)

从 Bash 4 开始,有一个特殊的 `__FILE__` 变量,它包含脚本的文件名(不含路径)。例如,以下脚本使用 `__FILE__` 显示其自身名称:```bash
echo "脚本名称:$__FILE__"
```
## 最佳做法

根据具体情况,选择最合适的显示脚本名称的方法。以下是几点建议:* 如果脚本是一个符号链接,则使用 `readlink` 解析目标路径。
* 如果脚本不在当前路径中,则使用 `which` 查找完整路径名。
* 在 Bash 4 及更高版本中,使用 `__FILE__` 变量以获取文件名(不含路径)。
* 对于其他情况,`$0` 变量通常就足够了。

2024-12-16


上一篇:如何在 Bash 脚本中换行

下一篇:使用 Bash 脚本打开程序