簡體   English   中英

$ PATH優於別名

[英]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)。 我喜歡寫這些東西,因為他們真的很感興趣,我想分享我的經歷 - 我希望他們也對其他人有所幫助。 此外,如果我必須解釋一些事情,它有助於我加深理解 - 這也是一個很好的未來參考!

如果你能很快瀏覽一下這篇文章會很好,如果我有些不對勁,我會對建議感到高興!

http://scientific-ocean.com/2013/02/17/an-introduction-to-linuxunix-executables-path-aliases-and-symlinks/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM