[英]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
仅在每次用户登录时加载。 在这里查看更多。
从当前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.