假设有一个脚本master.sh,其名称为
./foo/bar/master.sh
并包含行
#!/bin/zsh
. ./x/y/slave.sh
是否有可能从slave.sh中找出正在执行采购的脚本是./foo/bar/master.sh?
我不能在这里使用 $0,因为这会返回./x/y/slave.sh。
我使用的是 zsh 5.0.6
最佳答案
实现此目的的一种方法是让子脚本将调用者的名称作为可选参数。因此这可以通过 `$1` 访问 例如:
#!/bin/zsh
# master/leader
. ./x/y/slave.sh $0 # or hardcoded path
#!/bin/zsh
# slave/worker
echo "Here is my master $1"
(您还可以使用主设备设置的环境变量执行另一个自定义协议(protocol))
(此解决方案也适用于 bash 和其他 shell)
关于linux - 我可以找出谁调用了 zsh 脚本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29342985/