繁体   English   中英

如何使ruby的`system`调用知道我的`.bash_profile`别名?

[英]How do I make ruby's `system` call aware of my `.bash_profile` aliases?

我希望能够从ruby程序中调用我的快捷方式之一(即别名)。 换句话说,我想要

system('cpl')

相当于写作

cd ~/Documents/CPlusPlus

在命令行中,因为我的.bash_profile包含该行

alias cpl="cd ~/Documents/cplusplus"

我在Mac OSX上,尽管.bash_profile位于通常的位置( ~ ),但是我可能正在将Ruby写入任何旧文件夹中。 我正在使用/usr/local/bin/ruby Ruby 2.2.0。

以下应该工作:

system("bash -ci 'cpl'")

c开关将“执行” cpl作为命令而不是搜索文件。 i将bash变为交互模式,更重要的是加载了.bashrc文件。

编辑:确保在.bashrc文件中定义别名。 每次新的shell初始化时都会加载此文件。 .bash_profile仅在每次用户登录时加载。 在这里查看更多。

source文档:

从当前Shell上下文中的filename参数读取和执行命令。

shopt -s expand_aliases docs中

如果设置,别名将被扩展。 默认情况下,此选项对于交互式Shell启用。

您使用非交互式外壳,因此需要执行此附加步骤:

system %(
  source ~/.bash_profile
  shopt -s expand_aliases
  cpl
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM