一 linux環境變數概念的重要性
最初用linux是為了學習機械人作業系統(ros),由於之前沒有接觸過linux,所以並不了解其中的一些關鍵概念,導致走了許多彎路,如在ros的安裝過程中,沒有理解安裝教程中的1.6 環境變數建立中的指令的意義,所以導致有時在自己工作空間建立的包會有找不到的情況。因此,本文結合ros安裝教程中的部分指令,重點介紹linux環境變數的概念及應用。
二 環境變數的概念
環境變數,就是描述環境的變數。環境就是與shell相關的會話和工作環境,變數就是可變的量。
三 變數的分類及操作
變數分為全域性變數和區域性變數;
全域性變數對shell和shell建立的子程序可見(繼承性);
區域性變數只對建立它們的shell可見(臨時性)。
區域性變數可以變為全域性變數,供其建立的子程序使用(export);
顯示全部環境變數(printenv);
顯示所有變數(set)
需要注意的是:這些自己定義的全域性變數和區域性變數在登出bash時就會失效。
四 path環境變數
path環境變數決定命令的查詢位置和path變數中的查詢順序;
為什麼是path變數中的查詢順序,因為命令執行的順序是按照以下四個方式查詢:
1 以相對/絕對路徑執行命令
2 由alias找到該命令
3 bash內建的命令
4 path變數中的順序(如你自己寫個shell檔案,可以把資料夾的路徑加入到其中)
五 環境變數配置檔案
系統環境配置檔案的作用是讓bash啟動時可直接讀取這些檔案,而不需要我們自己定義。
配置檔案分為全體系統配置檔案和個人使用者配置檔案。
六 啟動shell的不同方式
shell啟動方式不同,會啟用不同的配置檔案。
shell啟動方式分為三種:
1 登入shell(預設登入shell):需要輸入使用者賬號和密碼的shell
2 非登入shell(互動式shell):不需要輸入賬號密碼的shell
3 執行指令碼(非互動shell)
登入shell和非登入shell具體如何呼叫哪些配置檔案,本文不做說明,我們只需要知道都呼叫了環境配置檔案 ~/.bashrc 即可。
七 示例:ros安裝教程中環境變數的建立
安裝ros的官方教程,我們會發現在建立環境變數時會有給我們三種選擇:
第一種:可以在你每次在啟動新的shell時自動新增ros的環境變數
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrcsource ~/.bashrc
第二種:只是在你當前的shell中新增ros的環境變數
source /opt/ros/kinetic/setup.bash
第三種:使用的是zsh,而不是bash
echo "source /opt/ros/kinetic/setup.zsh" >> ~/.zshrcsource ~/.zshrc
這裡我們使用前兩種進行說明。
我們上面說過自己定義的全域性變數和區域性變數在登出bash時就會失效,想讓自己定義的變數不失效的辦法:寫入配置檔案
因此,就有了ros中第一種環境變數的建立:
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrcsource ~/.bashrc
第一行表示把" "中的字串寫入到~/.bashrc中(需要登出再登陸才會生效,>> 表示資料流輸出重定向"追加",>表示"替換")
第二行表示把配置檔案讀入當前的shell中。(立即生效)
所以有ros第二種環境變數建立方法
source /opt/ros/kinetic/setup.bash
把配置檔案讀取到當前的shell中。
至此,環境變數的大部分概念都已經介紹完畢。
linux環境程式設計 環境變數 列印環境變數
在shell程式設計主題中,我們已經大致的介紹過 環境變數和本地變數啦 我們今天來具體的介紹介紹,那環境變數到底是什麼呢?是我 一.環境變數含義 特徵 環境變數是指 作業系統中用來指定作業系統執行環境的一下引數 1 特徵 字串 有統一的格式 名 值 值 值用來描述程序的環境資訊 2 使用形式 與命令...
linux環境變數
初次學習lliux對環境變數的知識甚是不解決,特花費乙個上午的時間總結了一下,可以說是全面!如各位有更加詳細的見解不妨告知!定製環境變數 環境變數是和shell緊密相關的,使用者登入系統後就啟動了乙個shell。對於linux來說一般是bash,但也可以重新設定或切換到其它的 shell。環境變數是...
Linux環境變數
好吧,我承認這篇文章是轉的.1.顯示環境變數home echo home home redbooks 2.設定乙個新的環境變數hello export hello hello echo hello hello 3.使用env命令顯示所有的環境變數 env hostname redbooks.safe...