bash - 在 bash 脚本中获取调用者脚本的名称

标签 bash shell

假设我有 3 个 shell 脚本:

script_1.sh

#!/bin/bash
./script_3.sh

script_2.sh

#!/bin/bash
./script_3.sh

问题是在 script_3.sh 中我想知道调用者脚本的名称。

这样我就可以对我支持的每个来电者做出不同的回应

请不要假设我问的是 $0 因为 $0 每次都会回显 script_3 无论是谁来电者

这是一个带有预期输出的示例输入

  • ./script_1.sh 应该回显 script_1

  • ./script_2.sh 应该回显 script_2

  • ./script_3.sh 应该回显 user_name 或 root 或任何东西以区分这 3 种情况

这可能吗?如果可能,如何实现?

这将被添加到一个 rm 修改过的脚本中...所以当我调用 rm 时它会做一些事情,当 git 或任何其他 CLI 工具使用 rm 不受修改影响

最佳答案

根据@user3100381 的回答,这里有一个更简单的命令来获得我认为应该相当便携的相同内容:

PARENT_COMMAND=$(ps -o comm= $PPID)

comm= 替换为 args= 以获得完整的命令行(命令 + 参数)。 = 单独用于抑制 header 。

参见:http://pubs.opengroup.org/onlinepubs/009604499/utilities/ps.html

关于bash - 在 bash 脚本中获取调用者脚本的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42020910/

相关文章:

bash - 此 bash 命令在 Makefile 中未正确运行

shell - 使用 shell 的查找结果作为 Makefile 中的目标

linux - Bash:如何从 txt 文件中读取行,按列值识别和删除重复项

json - jq通过特定的key统计json中的item个数

bash - 如何正确使用 .bashrc 并运行应用程序?

html - 如何使用awk根据其他字段求和字段

ruby - 杀死已经脱离 shell 的子进程

bash - 如何检测我的 shell 脚本是否通过管道运行?

json - Bash,管道解析和格式化 json(瘦身)

Linux:从for中删除重复的字符串并剪切