Environment-Variables

重命名並添加到 $PATH

  • June 23, 2020

我知道我可以使用命令在 bash 終端上添加 $PATH 的路徑PATH=$PATH:foo。我也知道我可以使用命令為 bash 創建別名alias a=b 但只知道我注意到 bash 的別名不是全域別名,並且某些工具可能無法找到(這是非常合理的,如果文件說工具只是搜尋另一個依賴項的路徑)。

那麼如何使用不同的名稱將內容添加到路徑中,以便其他所有命令行工具都能輕鬆找到它?我可以為我的問題想到至少三個用途

$$ g++9 as default (this can be solved with update alternatives), python 3 as default and not 2 $$但是當我嘗試將bazelisk安裝為 bazel 時出現了我的主要問題,因為tensorflow需要按源配置建構bazel,對於我在預設目錄中安裝的資訊bazelgo~/go/bin/bazelisk

你可以分兩步做到這一點:

  1. 確保您的路徑以您要在其中提供“別名”名稱的目錄開頭。例如,我們可以使用bin/目錄中的$HOME目錄:
export PATH=$HOME/bin:$PATH
  1. 將別名作為符號連結放入該目錄。例如,要創建一個別名pythonpython3執行
ln -s $(which python3) $HOME/bin/python

筆記:

  • 你不需root要這樣做。
  • 執行此操作時要小心。做“奇怪”的事情ln -s /bin/cat $HOME/bin/ls會適得其反,就像與鄰居交談並將汽車稱為魚一樣。
  • 您的“別名”目錄不需要特殊名稱。我們不是在這裡發明一個新概念,我們只是直接使用$PATH工作原理。
  • 如果您的“別名”目錄位於最後一個,它將不起作用$PATH,它必須是第一個。
  • 不要替換whichcommand -v. command -v將行為不端:它將列印別名,列印沒有路徑的 shell-builtin 命令,並且在無法創建符號連結的這種情況下,它會成功給出錯誤的結果,而which會可靠地返回一個空字元串並將退出狀態設置為1, 允許 shell 腳本使用if alias=$(which python3) ; then ln -s $alias ~/bin/python ; fi. 或者只是通過使用失敗set -e; alias=$(which python3); ln -s $alias ~/bin/pythoncommand -v在使用別名和 shell 內置命令的情況下,使用會給出錯誤的結果。

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