2 path環境變數
tips
結尾這是linux學習的第一篇。其實在ubuntu上跑ros,編譯執行c++程式,解決相容性問題,安裝依賴庫,在這段時間裡,對linux的許多命令都已經有了大概的了解。之所以,還要特地抽時間來專門學習一下,是因為我覺得僅憑藉部落格和google上的碎片式的講解雖然可以解燃眉之急,但不是長遠之計。
本系列參考的書本為人民郵電出版社出版的圖靈程式設計叢書中的《linux命令列與shell指令碼程式設計大全(第三版)》。
由於是自我學習筆記,所以定然不是對全書的按部就班的學習,而是只記錄對我而言重要的內容。
linux系統在開始bash會話時,就已經設定了一些全域性環境變數,可以使用env
或者printenv
來顯示,由於全域性變數是十分繁多的,可以考慮用|grep
來做查詢,或者像printenv home
那樣,顯示特定的環境變數。
當要使用環境變數時,應在前面加上$
,下面命令用echo來顯示了home的值:
echo
$home
/home/host
題外話:波浪號~
與$home
是一樣的。
設定方法很簡單,直接像程式設計那樣用=
賦值即可,也無需宣告,但=
前後不可以有空格,否則會視為是幾個不同的命令(與c++程式設計規範不太一樣)。如:
my_variable=hello
my_variable=
"hello world"
需要注意的是,自己定義的一定要全小寫,否則一旦不小心改了環境變數,會造成不可預料的後果。
區域性變數僅限當前shell使用,若要設定自定義的全域性環境變數,可以用export
實現,變數名前無需$:
export my_variable
需要注意的是,在父shell定義賦值的全域性環境變數,在子shell是無法修改的(無論用=
還是export
),子shell的區域性變數與父shell中的全域性環境變數可以重名,此時的處理與c++中的處理邏輯一致。
用unset
命令即可,注意無需$
:
unset my_variable
需要注意的是,在子shell中刪除變數不會影響定義在父shell中的全域性環境變數。
path環境變數規定了shell命令列中輸入乙個命令,shell要去搜尋的目錄,以找到相應的程式。在ubuntu裡,path環境變數內容如下:
echo
$path
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
只需引用原來的path,然後給字串新增新目錄即可,注意目錄與目錄之間是用:
隔開的:
path=
$path:/home/xyw/scripts
更常用的是用單點符直接把當前路徑匯入到path:
path=
$path:.
在互動式的shell程序中(即不是登入系統時自動啟動的),bash並不會訪問/etc/profile,而是檢查使用者目錄中的.bashrc
檔案,實際上像ros裡常用到的source
命令,就可以寫在這裡面,這樣就不用每次都手動鍵入。
所以答案也很清楚了,就是修改~/.bashrc
就可以實現持久化。
答:要使用到變數就加$
,要操作變數就不加,相當於$
是乙個解引符(變數可以視為c++中的指標,$可以視為*)。
令人尷尬的事情發生了,我發現好像其他的內容好像都不需要記住。比如df du這類維護硬碟的操作,或者ps kill等與程序相關的操作,或者vim編輯器的使用,或者cat more less的使用,或者tar相關的命令。這些都屬於多且雜,但使用頻率不高的命令,遇到的時候翻一翻就可以了。
而這本書剩下的基本都和shell指令碼程式設計有關,雖然很炫酷,但用python寫指令碼不是更簡單嗎。。
所以這個系列可能剛開始,就要完結了。
linux命令系列10 環境變數
學習基本的linux命令操作,對於我們熟悉linux或者unix系統還是很有幫助的。1 只設定當前shell的環境變數 這種方式只對當前的shell 起作用,換乙個shell設定就無效 path path new path 2 設定所有使用者shell的環境變數 開啟 etc profile 檔案,...
LINUX環境(二) 環境變數
環境變數 getenv,putenv,setenv,unsetenv environ 環境變數 getenv,putenv,setenv,unsetenv 環境變數 getenv 取得環境變數內容 相關函式 putenv setenv unsetenv 表頭檔案 include 定義函式 char ...
Linux環境(二) 環境變數
環境變數 我們在第2章討論了環境變數。這些變數可以用來控制shell指令碼和其他程式的形為。我們也可以使用他們來配置使用者環境。例如,每乙個使用者都有乙個環境變數,home,定義了其使用者主目錄,作為其會話的起始位置。正如我們所知的,我們由shell提示來測試環境變數 echo home home ...