如何让ruby的`system`调用知道我的`.bash_profile`别名?
我希望能够在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
。
来自source
文档:
从当前shell上下文中的filename参数读取并执行命令。
来自shopt -s expand_aliases
docs :
如果设置,则会扩展别名。 对于交互式shell,默认情况下启用此选项。
您使用非交互式shell,因此需要执行以下附加步骤:
system %( source ~/.bash_profile shopt -s expand_aliases cpl )
以下应该有效:
system("bash -ci 'cpl'")
c
开关告诉“执行” cpl
作为命令而不是搜索文件。 i
将bash变为交互模式,更重要的是加载.bashrc
文件。
编辑:确保在.bashrc
文件中定义别名。 每个新shell初始化时都会加载此文件。 .bash_profile
仅在每次用户登录时加载。 在这里查看更多。