為什麼點命令(來源)對 zsh 中沒有路徑的檔案不起作用?

為什麼點命令(來源)對 zsh 中沒有路徑的檔案不起作用?

我最近從 bash 切換到 zsh。在 bash 中,我使用了.來源指令的點別名,例如

. .bashrc

它與. .bashrc, . ~/.bashrc,一起工作. ./.bashrc

然而,對於 zsh,點別名的工作方式不同。它僅適用於文件的路徑。但如果我使用沒有路徑的文件則不會:

這不起作用:

. .zshrc

它會給我這個錯誤:.: no such file or directory: .zshrc

但這些都有效:

source .zshrc
. ./.zshrc
. ~/.zshrc

答案1

這其實是標準行為點命令的:它使用 $PATH 搜索,就像運行命令時一樣 – 不是常規的相對路徑。因此,您可以將常用庫放在 ~/bin/ 中,然後. libwhatever.sh從任何目錄中簡單地載入它們。

執行直接相對路徑查找為非標準 Bash 擴充。

(類似地,dot.實際上是「shell 語言」標準中列出的主要命令,並且source是特定於 shell 的別名 - 而不是相反。)

相關內容