Zsh

shell腳本的配置文件?

  • September 16, 2020

是否可以為 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或添加一行會起作用,但我想知道是否可以為我的機器上(由我​​)執行的任何 zsh 腳本設置一個預設執行的配置文件?source ~/.zsh_login

我問這個是因為我想設置一個別名,當我通過:!例如在 vim 中呼叫命令時:!abc,以及]程序nnn中的命令時,該別名有效。如果這與我上面的問題無關,請告訴我。我對登錄 shell 和非登錄 shell 或其他類型的 shell 感到困惑。僅供參考,在 vim 中,:!echo $0將 return/bin/zsh並將:!whoamireturn ***(my name),所以它看起來像是一個登錄 shell。

對於您執行的任何 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 -命令模式

引用自:https://unix.stackexchange.com/questions/609282