如何在OSX上的Ruby脚本中使用shell中的Bash别名?
如何在Ruby脚本中执行Bash shell中的别名 代码如下:如何在OSX上的Ruby脚本中使用shell中的Bash别名?,ruby,bash,alias,Ruby,Bash,Alias,如何在Ruby脚本中执行Bash shell中的别名 代码如下: aliases = [ 'ul', 'ur', 'dl', 'dr', 'll', 'rr', 'up', 'down', 'big', 'cen' ] while true a = aliases.sample `#{a}` puts `figlet -f doh "#{a}"` end 我想: 从别名数组中选择随机外壳别名。(这些别名是我可以在shell中使用的别名,如my.b
aliases = [ 'ul', 'ur', 'dl', 'dr', 'll', 'rr', 'up', 'down', 'big', 'cen' ]
while true
a = aliases.sample
`#{a}`
puts `figlet -f doh "#{a}"`
end
我想:
- 从
数组中选择随机外壳别名。(这些别名是我可以在shell中使用的别名,如my别名
中定义的).bashrc
- 执行所选别名
- 使用
将所选别名的名称打印到终端屏幕figlet
- 当我执行
时,我得到:/mysciprt
shopt
设置了expand_alias
shell选项(请参见下面shell内置命令下的shopt
说明),否则shell不交互时,别名不会展开
快速搜索“shell shopt expand_别名”显示了大量点击
请参见“”、“”和“”。快速查看Bash手册页,显示: 除非使用
shopt
设置了expand_alias
shell选项(请参见下面shell内置命令下的shopt
说明),否则shell不交互时,别名不会展开
快速搜索“shell shopt expand_别名”显示了大量点击
请参阅“”、“”和“”。
别名是一个关键字,决不能用作变量名或方法名。别名是一个关键字,决不能用作变量名或方法名
别名在Ruby中是一个关键字,因此不能将其用作标识符
当您从Bash执行源xxxx时,它将文件“xxxx”解释为Bash程序。您的文件是Ruby程序,因此无法获取源代码
别名在Ruby中是一个关键字,因此不能将其用作标识符
当您从Bash执行源xxxx时,它将文件“xxxx”解释为Bash程序。您的文件是Ruby程序,因此无法获取源代码
事实证明,解决方案是在Ruby脚本中以交互式shell的形式运行shell命令(这样.bashrc
就可以获得源代码,并且shell的环境可以使用别名):
事实证明,解决方案是在Ruby脚本中以交互式shell的形式运行shell命令(这样.bashrc
就可以获得源代码,并且shell的环境可以使用别名):
更新:我说不能从ruby代码调用alias是错误的。请参阅我的问题以获得答案:更新:我说您不能从ruby代码调用alias是错误的。请参阅我的问题以获取答案:
ul: command not found
aliases = [ 'ul', 'ur', 'dl', 'dr', 'll', 'rr', 'up', 'down', 'big', 'cen' ]
while true
a = aliases.sample
`bash -ic '#{a}'`
puts `figlet -f doh "#{a}"`
end