当我有一个以shebang开头的可执行ruby脚本foo
时
FOO
#!/usr/bin/env ruby
并将bash脚本bar
中的ruby脚本称为可执行文件(即不调用ruby foo
,而是直接调用foo
),如何获取{{{{}的完整路径1}}来自ruby脚本bar
?
<小时/> 的修改
如果无法做到这一点,那么我是否可以在其间使用bash脚本foo
,以便:
baz
(bash)调用bar
(bash)调用baz
(红宝石)
其中foo
调用bar
而没有任何显式参数,baz
计算出调用者baz
的路径,并在调用bar
时将其作为参数传递}?
就我的目的而言,只要原始bash脚本foo
不需要明确传递,foo
是否需要接收路径信息就可以了。
答案 0 :(得分:3)
首先,请注意问题没有明确定义。如果bar
不是可执行文件的唯一链接,则没有唯一路径。假设您不关心该问题,并且您只想知道如何访问bar
,如果您在Linux上运行,则/proc/pid-of-bar/cmdline
中提供了相关信息。如果foo的父级是进程运行条(它应该是,除非你已经守护或foo
不是直接后代),条形图的pid在PPID环境中可用于foo(尽管ruby几乎肯定提供了更好的方法来访问父亲的pid。)所以,得到你父母的pid并读取/ proc / parent-pid / cmdline。如果bar被调用为shell脚本,则第一个cmdline字符串将是解释器(以null结尾),第二个字符串将是您关心的路径。
答案 1 :(得分:-1)
如果我理解你的问题,你只需要0美元。
编辑:当然可以通过条形码将其传递到ruby脚本中。