如何在bash中执行脚本名称?

时间:2013-02-12 14:48:18

标签: bash shell .bash-profile

所以我想创建一个可移植的bashrc / bash_profile文件。我有一个单独的脚本,我象征性地链接到.bashrc,.bash_profile等。然后我看$0并根据调用的脚本切换我做的事情。问题是shell调用bashrc脚本当然它执行bash真的意味着$0对我来说是-bash$1更多未设置为脚本名称。

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

我认为它为-bash提供了$1未设置,因为它实际上不是一个新进程。有什么想法吗?

3 个答案:

答案 0 :(得分:28)

尝试:

readlink -f ${BASH_SOURCE[0]}

或只是:

${BASH_SOURCE[0]}

说明

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

时有效

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

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

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

答案 1 :(得分:2)

变量BASH_ARGV应该有效,脚本显示为being sourced

$BASH_ARGV

答案 2 :(得分:0)

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

#!/bin/bash
echo "The script is being executed..."
readlink -f ${BASH_SOURCE[0]}