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

Dav*_*ond 7 bash shell .bash-profile

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

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

我认为它给了我-bash$1未设置,因为这实在不是一个新的进程.有任何想法吗?

Hui*_*eng 28

尝试:

readlink -f ${BASH_SOURCE[0]}

要不就:

${BASH_SOURCE[0]}.

备注:

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

$BASH_ARGV 仅当用户执行".script.sh"或"source script.sh"时才有效

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

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

  • 这应该是公认的答案,因为它提供了更多细节并更清楚地解释了不同的场景。 (2认同)

小智 2

该变量BASH_ARGV应该可以工作,看来脚本正在被获取

$BASH_ARGV
Run Code Online (Sandbox Code Playgroud)