如何使用 Bash 获取脚本路径198


在 Bash 脚本中,经常需要获取脚本本身的路径。这对于各种任务非常有用,例如加载配置文件、引用外部文件或调试目的。本文将介绍在 Bash 中获取脚本路径的几种方法。## 使用 $0

$0 是一个特殊变量,它包含当前正在执行的脚本的路径。最简单的方法是直接使用 $0 来获取脚本路径:```bash
#!/bin/bash
echo $0
```

这将打印当前脚本的完整路径,包括文件名。## 使用 readlink

readlink 命令可以用来解析符号链接并返回原始文件的路径。如果您正在使用符号链接启动脚本,则可以使用 readlink 来获取原始脚本的路径:```bash
#!/bin/bash
SCRIPT_PATH=$(readlink -f $0)
echo $SCRIPT_PATH
```

readlink -f 选项将解析所有符号链接并返回原始文件的绝对路径。## 使用 dirname

dirname 命令可以用来获取文件的目录部分。您可以使用 dirname 来获取脚本的目录,然后将其与文件名拼接起来以获取脚本的路径:```bash
#!/bin/bash
SCRIPT_DIR=$(dirname $0)
SCRIPT_PATH=$SCRIPT_DIR/`basename $0`
echo $SCRIPT_PATH
```

dirname $0 返回脚本的目录部分,而 basename $0 返回脚本的文件名。然后,可以使用 / 将目录和文件名连接起来以获取脚本的路径。## 使用 cd 和 pwd

cd 和 pwd 命令可以一起用来获取脚本的路径。cd 更改当前工作目录,pwd 打印当前工作目录的绝对路径。您可以使用如下所示将两个命令组合起来:```bash
#!/bin/bash
cd `dirname $0`
SCRIPT_PATH=`pwd`
echo $SCRIPT_PATH
```

cd `dirname $0` 将更改当前工作目录为脚本的目录。然后,pwd 将打印脚本目录的绝对路径。## 使用 BASH_SOURCE

BASH_SOURCE 数组包含当前正在执行脚本的所有源文件路径。第一项包含当前脚本的路径。您可以使用以下方式访问 BASH_SOURCE:```bash
#!/bin/bash
SCRIPT_PATH=${BASH_SOURCE[0]}
echo $SCRIPT_PATH
```

这将获取当前脚本的绝对路径,即使它是一个 sourced 脚本(即使用 . 命令加载的脚本)。## 结论

在 Bash 中获取脚本路径有多种方法。根据您的具体需要,您可以选择最适合的方法。请记住,如果您使用符号链接启动脚本,则使用 readlink 解析符号链接非常重要。

2024-12-10


上一篇:Linux Bash 脚本延迟

下一篇:Bash 脚本:创建函数的从入门到精通指南