7

所以我正在尝试制作一个可移植的 bashrc/bash_profile 文件。我有一个脚本,我象征性地链接到 .bashrc、.bash_profile 等。然后我正在查看$0并根据调用的脚本切换我所做的事情。问题是 shell 调用 bashrc 脚本当然它确实执行 bash 这$0对我来说是-bash. $1此外,未设置脚本名称。

所以我的问题是,在 bash 中如何获取正在执行的脚本的名称。不是执行它的二进制文件,例如 bash?

我认为它给了我-bash没有$1被设置,因为它真的不是一个新的过程。有任何想法吗?

4

3 回答 3

30

尝试:

readlink -f ${BASH_SOURCE[0]}

要不就:

${BASH_SOURCE[0]}.

备注

$0仅在用户执行“./script.sh”时有效

$BASH_ARGV仅在用户执行“.script.sh”或“source script.sh”时有效

${BASH_SOURCE[0]}适用于两种情况。

readlink -f在使用符号链接时很有用。

于 2013-02-12T14:52:25.883 回答
2

该变量BASH_ARGV应该可以工作,似乎正在获取脚本

$BASH_ARGV
于 2013-02-12T14:53:42.280 回答
0

创建 .sh 文件让我们说 view.sh 然后放

#!/bin/bash
echo "The script is being executed..."
readlink -f ${BASH_SOURCE[0]}
于 2021-08-02T05:08:09.240 回答