我希望能够在ruby程序中调用我的一个快捷方式(即别名)。换句话说,我想要
system('cpl')
相当于写作
cd ~/Documents/CPlusPlus
在命令行,因为我的.bash_profile
包含行
alias cpl="cd ~/Documents/cplusplus"
我在Mac OSX上,虽然我的.bash_profile
住在通常的地方(~
),但我可能会在任何旧文件夹中写入ruby。我使用的是Ruby 2.2.0,它位于/usr/local/bin/ruby
。
答案 0 :(得分:6)
以下内容应该有效:
system("bash -ci 'cpl'")
c
开关告诉"执行" cpl
作为命令而不是搜索文件。 i
将bash变为交互模式,更重要的是加载.bashrc
文件。
编辑:确保在.bashrc
文件中定义别名。每个新shell初始化时都会加载此文件。 .bash_profile
仅在每次用户登录时加载。查看更多here。
答案 1 :(得分:0)
从当前shell上下文中的filename参数读取并执行命令。
From shopt -s expand_aliases
docs:
如果设置,则会扩展别名。对于交互式shell,默认情况下启用此选项。
您使用非交互式shell,因此需要执行以下附加步骤:
system %(
source ~/.bash_profile
shopt -s expand_aliases
cpl
)