从shell调用ruby

时间:2014-06-15 13:56:51

标签: ruby linux bash shell sh

当我有一个以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是否需要接收路径信息就可以了。

2 个答案:

答案 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脚本中。