[英]Advantage of $PATH over alias
我對Linux和Unix比較陌生。 在互聯網的幫助下,我終於想出了我的.bashrc
$PATH
和別名是如何工作的。
但我真的找不到任何描述何時使用哪個。
假設我在Library / Frameworks中安裝了Python3.3,可執行文件是/Library/Frameworks/Python.framework/Versions/3.3/bin/python3
,但是我想通過在我的終端中鍵入python3
來執行python 3.3。
當我理解正確時,有(至少)三種方法來實現這一點:
1)我在.bashrc中修改$ PATH:
export PATH=/Library/Frameworks/Python.framework/Versions/3.3/bin:${PATH}
2)我在.bashrc中設置了一個別名:
alias python3=/Library/Frameworks/Python.framework/Versions/3.3/bin
3)創建符號鏈接(符號鏈接):
ln -s /Library/Frameworks/Python.framework/Versions/3.3/bin /usr/local/bin
你會說(根據你的經驗)是“推薦”的方式嗎?
將python3
放在路徑中是在文件系統中找到自己的地方調用它的正確方法。 符號鏈接是將該命令更改為python
並保持腳本不依賴於版本的最佳方法(您可以運行依賴於python的腳本使用符號鏈接和需要python 3.0的腳本專門使用python3,即使在您的計算機上他們是一樣的東西)。 符號鏈接仍然是文件系統中的文件,因此它們仍然需要在您的路徑中。
我只看到當你試圖創建某種行為時使用的別名,這種行為與命令行實用程序的默認行為不同,比如靜默添加-s的ls
的別名。
此外,符號鏈接也存儲在文件系統中,因此一旦創建,它們就會存在於登錄的所有其他用戶,而別名僅適用於已定義它們的登錄用戶。 他們還可以應用文件權限。
這是一篇有趣的文章,介紹了你可以通過.bash_profile
對你的終端做些什么,包括一些很棒的別名。
首先,沒有理由在/Library/Frameworks/
目錄中安裝Python。 我的建議是(至少對初學者而言)你不應該添加像/Library
這樣的頂級目錄。 如果你從源代碼編譯它,你應該用標准./configure
構建它 (它可能進入/usr/local/
)
我不太了解從源代碼編譯Python,但大多數Linux源代碼默認獲得./configure
-d到/usr/local/
prefix所以他們的二進制文件進入/usr/local/bin/
這通常已經默認情況下在PATH
一些Linux發行版有一個/etc/profile
,間接地,如果目錄$HOME/bin/
存在,則將它添加到你的PATH
; 在這種情況下,只需添加二進制文件和腳本(或符號鏈接),這是最簡單的方法。
我的一般建議是避免使用非常長或非常具體的PATH
。 特別是,在每個產品的PATH
添加一個目錄是恕我直言,這是一個錯誤。 請參閱例如GNU編碼標准的目錄變量部分 ,並保持PATH
非常短。 我個人只在/usr/local/bin/
(系統范圍)或$HOME/bin/
添加程序,可能作為符號鏈接(因此我不會更改我的PATH
因為它已包含/usr/local/bin/
和$HOME/bin
)。
根據過去的經驗,擁有非常長的PATH
是一場噩夢,並且會降低您的交互式外殼的速度
如果您使用不同版本的Python,我建議您選擇別名,以便更容易發生沖突。 shell將查找PATH變量,並且只要它與Python的可執行文件匹配,它就會執行它。 別名必須放在你的shell配置文件中,如.bash_profile
。
謝謝大家的解釋。
正如我已經說過的,我對Unix和Linux都很陌生。 我剛剛為我的博客寫了一篇關於其他“新手”的文章(別名,符號鏈接$ PATH)。 我喜歡寫這些東西,因為他們真的很感興趣,我想分享我的經歷 - 我希望他們也對其他人有所幫助。 此外,如果我必須解釋一些事情,它有助於我加深理解 - 這也是一個很好的未來參考!
如果你能很快瀏覽一下這篇文章會很好,如果我有些不對勁,我會對建議感到高興!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.