如何获得在bash中执行的脚本名称?
问题描述:
所以我想制作一个可移植的bashrc/bash_profile文件。我有一个脚本,我象征性地链接到.bashrc,.bash_profile等。然后,我正在查看$0
并根据哪个脚本被调用来切换我的操作。问题是shell调用bashrc脚本,当然它会执行bash,这对我来说意味着$0
是-bash
。 $1
更多未设置为脚本名称。如何获得在bash中执行的脚本名称?
所以我的问题是,在bash中如何获得正在执行的脚本的名称。不是执行它的二进制文件,例如庆典?
我认为它给我-bash
$1
没有被设置,因为它实际上不是一个新的过程。有任何想法吗?
答
尝试:
readlink -f ${BASH_SOURCE[0]}
或者只是:
${BASH_SOURCE[0]}
。
备注: “script.sh”
$0
,只有当用户执行 “./script.sh”
$BASH_ARGV
只有当用户执行工程或 “来源script.sh”
${BASH_SOURCE[0]}
适用于这两种情况。
readlink -f
在使用符号链接时很有用。
+0
这应该是公认的答案,因为它提供了更多的细节,并解释了不同的场景更清晰。 – piratemurray 2015-07-20 19:31:42
意思是这不是通用的。当解析$ ARGV时,你必须知道你被其他脚本调用了。也许我错了。如果我错了,你应该加强对你答案的解释,例如添加一个例子 – hek2mgl 2013-02-12 15:02:28