我正在使用rerun
并且sinatra
足够我想要一个很好的别名,以便可以rerun ruby X.rb
在X是当前目录的地方执行(即:/Users/David/Documents/Projects/sample
=> rerun ruby sample.rb
)。
我正在使用的命令(适应此问题)是alias sin="rerun ruby ${PWD##*/}.rb"
。当我使用它时,它表示ruby: No such file or directory -- David.rb (LoadError)
好像它是通过我的用户文件夹而不是项目文件夹传递的。
但是,当我手动获取我的.zshrc
(alias sz="source ~/.zshrc"
,该代码应在创建外壳程序时运行(我的所有其他别名都可以正常运行,因此我没有理由认为它无法正常运行))并sin
再次运行时,它完全可以按预期运行。
有任何想法吗?我对bash脚本非常陌生。另外,如果重要的话,我正在使用zsh。
关于别名的一般规则是“如果需要询问,请改用函数”:
sin() {
rerun ruby "${PWD##*/}.rb"
}
它按预期工作。
在您的情况下,特殊的问题${PWD##*/}
是在定义别名时扩展了该别名,而不是在运行别名时扩展了该别名。您还可以通过在定义中使用单引号来修复它:
alias sin='rerun ruby "${PWD##*/}.rb"'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句