在Bash shell中,我想从任何地方运行ruby脚本目录。将目录添加到$ PATH不会这样做。
我想输入'ruby',开始输入脚本名称的第一个字母,然后按Tab键自动填充脚本名称。
例如,我在/~ / username / foo / bar并想运行/~/ruby/test/script1.rb
〜/ username / foo / bar $ ruby scri
按Tab键和
/ username / foo / bar $ ruby script1.rb
出现。然后我就可以按Enter键并让脚本运行,即使我不在正确的目录中。
这可能吗?
答案 0 :(得分:2)
如果将其添加到脚本的顶行。使用'which ruby'来找出解释器所在的位置并改为使用该路径。
#!/usr/local/bin/ruby -w
然后使用
将它们更改为可执行文件chmod +x ruby_script.rb
例如,您可以像普通程序一样使用它们(虽然您可能想要丢失.rb扩展名)
ruby_script.rb
答案 1 :(得分:2)
查看/etc/bash_completion
文件和complete
命令。谷歌搜索这些关键字应该为您提供一些教程,如如何自定义bash自动完成。
另外,请确保您的ruby脚本具有正确的she-bang线。
答案 2 :(得分:1)
据我所知,你可以做的唯一bash完成就是运行脚本本身。如果您要使脚本可执行并将其放在路径中,您应该能够通过键入
来运行脚本my_scri
然后点击标签。这可能是最简单的方法。你在用什么操作系统?我们或许可以提供更多帮助。
答案 3 :(得分:1)
我发现this tutorial特别有帮助。基本上你想要达到这条线:
COMPREPLY=( $(compgen -W "${files}" -- ${cur}) )
然后你必须弄清楚如何做的主要是获取/〜/ ruby / test目录中当前目录+文件中的文件列表,并将其分配给files
。
虽然它有点复杂,因为你必须考虑路径。
答案 4 :(得分:0)
为什么不直接制作ruby可执行文件并在第一行包含解释器,如下所示:
$cat >un.rb<<END
> #!/usr/bin/ruby
> puts "Hi"
> END
$chmod +x un.rb
$export PATH=$PATH:/Users/oscarreyes
$cd /tmp
$un.rb
Hi
我已使用标签自动填充我的命令un.rb