我在文件中设置了一个别名.bash_aliases
来执行 neovim。我可以从命令行成功使用此别名,但是我无法通过变量(即变量EDITOR
- 设置在.bashrc
)使用此别名:
$ cat ~/.bash_aliases
alias nvim='$HOME/.apps/nvim.appimage '
$ nvim --version
NVIM v0.9.0
...
$ echo $EDITOR
nvim
$ $EDITOR
Command 'nvim' not found, but can be installed with:
...
我是不是漏掉了什么?变量无法展开然后解析为别名,这是什么原因?我知道有解决方法(例如在 PATH 中的某个位置建立指向 appimage 的符号链接),但我试图理解为什么这不起作用
答案1
变量无法扩展然后解析为别名的原因是什么?
处理输入行时,将执行别名解析前变量扩展– 不是在期间或之后。如链接页面所述,别名在“标记化”阶段很早就被扩展了。
请记住,别名(以及函数)在任何情况下都是 shell 内部的,因此即使这个做过在 shell 中工作,它仍然无法被任何尝试启动 getenv("EDITOR") 的外部程序识别,这使得它几乎完全无用。
相反,只需将 $EDITOR 设置为完整路径即可~/.apps/nvim.appimage
。