gpt4 book ai didi

ruby - 从 shell 中调用 ruby

转载 作者:太空宇宙 更新时间:2023-11-04 09:38:18 25 4
gpt4 key购买 nike

当我有一个以 shebang 开头的可执行 ruby​​ 脚本 foo

#!/usr/bin/env ruby

并从 bash 脚本 bar 中调用该 ruby​​ 脚本作为可执行文件(即不调用 ruby foo,而是直接调用 foo),如何从 ruby​​ 脚本 foo 中获取 bar 的完整路径?


编辑

如果这不可能,那么如果我在两者之间有一个 bash 脚本 baz 是否可能:

bar (bash) 调用 baz (bash),后者调用 foo (ruby)

bar 在没有任何显式参数的情况下调用 baz 并且 baz 找出其调用者 bar 的路径,并在调用 foo?

时将其作为参数传递

为了我的目的,foo是否需要接收路径信息作为参数是可以的,只要原始bash脚本bar不需要通过明确地说。

最佳答案

首先,请注意问题没有明确定义。如果 bar 不是可执行文件的唯一链接,则没有唯一路径。假设您不关心这个问题,您只想知道 bar 是如何被访问的,如果您在 Linux 上运行,那么该信息在 /proc/pid-of-bar/中可用命令行。如果 foo 的父进程是运行 bar 的进程(它应该是,除非你已经守护进程或 foo 不是直接后代),bar 的 pid 在 PPID 的环境中可用于 foo(尽管 ruby​​ 几乎当然提供了一种访问父进程的 pid 的更好方法。)因此,获取您父进程的 pid 并阅读/proc/parent-pid/cmdline。如果 bar 作为 shell 脚本调用,则 cmdline 的第一个字符串将是解释器(以 null 结尾),第二个字符串将是您关心的路径。

关于ruby - 从 shell 中调用 ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24230310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com