从另一个脚本调用时获取当前脚本名称

时间:2011-07-29 13:23:03

标签: shell unix scripting sh ksh

在KornShell(ksh)中,我有一个调用脚本列表的脚本。被调用者脚本需要知道其文件名,以便它可以生成唯一的配置(或任何事物应该是唯一的)。

问题是变量$0始终指向调用者脚本。例如,我们有两个脚本:

caller.sh:

. callee.sh

callee.sh:

echo $0

当我执行caller.sh时,callee.sh打印“caller.sh”,而不是“callee.sh”。那么如何获取当前运行脚本的脚本文件名?

该脚本在AIX服务器上运行,因此bash不可用。

2 个答案:

答案 0 :(得分:2)

这是因为您正在采购callee.sh,即. callee.sh

因此,如果您只能执行callee.sh(并且您不需要在callee.sh中设置的环境变量在caller.sh中处于活动状态),请将调用者scritpt更改为

#!/bin/ksh
callee.sh

我不想这么说,但我认为ksh会说'按设计工作'。

答案 1 :(得分:0)

callee.sh脚本中的以下命令为我工作。

echo $(basename ${BASH_SOURCE[0]})