shell脚本的配置文件?

shell脚本的配置文件?

是否可以为 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

相关内容