是否可以为 zsh 脚本定义配置文件?
我运行的是 macOS 10.15,默认 shell 是 zsh。我已经定义了,即alias abc="echo yes"
在 ~/.zshrc、~/.zsh_profile、~/.profile 和 ~/.zsh_login 中,我能想到的每个配置文件。然而,shell 脚本 t.sh 调用abc
会抱怨command not found: abc
:
⇒ cat t.sh
abc
⇒ zsh t.sh
t.sh:1: command not found: abc
⇒ sh t.sh
t.sh: line 1: abc: command not found
我知道在 t.sh 顶部添加一行source ~/.zshrc
或会起作用,但我想知道source ~/.zsh_login
是否可以设置一个配置文件,该文件默认运行在我的机器上(由我)执行的任何 zsh 脚本?
我问这个问题是因为我想设置一个别名,当我在 vim 中调用命令时:!
,例如:!abc
,以及]
程序中的命令恩恩。另外,如果这与我上面的问题无关,请告诉我。我对登录 shell 和非登录 shell 或其他类型的 shell 感到困惑。仅供参考,在 vim 中,:!echo $0
将返回/bin/zsh
并将:!whoami
返回***(my name)
,所以看起来它是一个登录 shell。
答案1
对于您运行的任何 zsh 脚本,~/.zshenv
都将来源:
=> cat ~/.zshenv
alias abc="echo yes"
=> cat t.sh
abc
=> zsh t.sh
yes
zsh 的点文件的简化层次结构:
~/.zshenv
- 所有 zsh 脚本的来源。~/.zshrc
- 源自所有交互式 zsh 会话(连接到终端的会话)。这通常是放置别名的最佳位置。~/.zprofile
- 源自登录 zsh 会话,即一组中的第一个交互式会话。
对于您的使用,最好将 MacVim 配置为启动交互式 shell,以便它从~/.zshrc
.为此,请将其添加到您的
~/.gvimrc
(注意 g)文件中:
let &shell='/bin/zsh -i'
对于其他 vim 风格,您可能需要做一些更复杂的事情 - 请参阅此处的答案:
https://vi.stackexchange.com/questions/16186/how-to-run-zsh-aliased-command-from-vim-command-mode