在IRB中调用bash函数

时间:2012-10-06 11:46:48

标签: ruby bash

如果我在shell控制台下运行自定义bash函数:

~/w/dotfiles/ruby [g:master-] ¶ repository_root
/Users/tian/Documents/workspace/dotfiles

如果我在IRB下运行自定义bash函数:

irb(main):001:0> `repository_root`
(irb):1: command not found: repository_root
=> ""

我如何在IRB中获得相同的结果?

# declare
repository_root () {
    if git_is_repository ; then
        git_show_repository_root
    fi
}

3 个答案:

答案 0 :(得分:2)

假设您的函数位于您的某个bash配置文件中,您希望启动一个交互式(-i)登录(-l)shell来执行(-c)您的函数:

output = %x{bash -lic 'repository_root'}

答案 1 :(得分:1)

执行此操作的一种方法是从函数中输出命令。

这是一个简短的操作方法

  1. 创建一个调用该函数的shell脚本文件。
  2. .bin中创建HOME目录,并将其添加到$PATH中的.bash_rc
  3. 将shell脚本文件放在.bin
  4. source .bash_rc更新您刚刚更改的$PATH变量。
  5. 假设您将文件命名为fnx,只需使用后退标记运算符或exec即可运行 命令 - exec("fnx")

答案 2 :(得分:0)

repository_root在哪里宣布?

.bash_profile中? .bashrc中?

在使用repository_root

之前尝试获取该文件
`. /path/to/file/declaring/repository_root; repository_root`