在KornShell(ksh)中,我有一个调用脚本列表的脚本。被调用者脚本需要知道其文件名,以便它可以生成唯一的配置(或任何事物应该是唯一的)。
问题是变量$0
始终指向调用者脚本。例如,我们有两个脚本:
caller.sh:
. callee.sh
callee.sh:
echo $0
当我执行caller.sh时,callee.sh打印“caller.sh”,而不是“callee.sh”。那么如何获取当前运行脚本的脚本文件名?
该脚本在AIX服务器上运行,因此bash不可用。
答案 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]})