Bash

使用 bash 在沒有 cd 的文件上執行點斜杠 (./) 的別名

  • April 16, 2020

我有一個這樣的目錄:

/home/user/Project/

Project在許多子目錄內部和之後,我有一個腳本名稱ninja,需要使用./ninja. 換句話說:

/home/user/Project/sub1/sub2/sub3/ninja

當然,我可以直接cd進入Project並執行./ninja. 但是,我正在編寫一個別名來通過 bashrc 執行該命令。

alias runNinja = cd ~/Project/sub1/sub2/sub3 && ./ninja

我們可以做到 1 個命令嗎?

alias runNinja = .~/Project/sub1/sub2/sub3/ninja

以上顯然不起作用,甚至這個

alias runNinja = ./home/user/Project/sub1/sub2/sub3/ninja

TL,DR:如何縮短別名以在目錄中執行腳本?

只需在 .bashrc 中的 $PATH 變數中附加路徑,如下所示:

export PATH=$PATH:/home/user/Project/sub1/sub2/sub3

並從任何你想要的地方執行它,即使沒有 ./

$ ninja

但是當然你也可以設置別名

alias runNinja='/home/user/Project/sub1/sub2/sub3/ninja'

並從任何地方執行:

$ runNinja

如果您在執行此程序時有意進入該目錄(例如:如果您正在處理任何文件作為該目錄或依賴項的輸入/輸出),則必須在 ~/.bashrc 文件或配置文件中編寫如下函式:

runNinja() { cd /home/user/Project/sub1/sub2/sub3 && ./ninja "$@" }

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