2

如果我在 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
}
4

3 回答 3

2

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

output = %x{bash -lic 'repository_root'}
于 2012-10-06T19:03:31.960 回答
1

一种方法是从函数中发出命令。

这是一个简短的操作方法

  1. 创建一个调用该函数的 shell 脚本文件。
  2. 在您的目录中创建一个.bin目录HOME并将其添加$PATH.bash_rc.
  3. 将 shell 脚本文件放在.bin.
  4. source .bash_rc更新$PATH您刚刚更改的变量。
  5. 假设您命名了文件fnx,只需使用反引号运算符或exec运行命令 -exec("fnx")
于 2012-10-06T13:34:00.993 回答
0

在哪里repository_root声明?

.bash_profile?.bashrc?

在使用之前尝试获取该文件repository_root

`. /path/to/file/declaring/repository_root; repository_root`
于 2012-10-06T12:56:46.717 回答