linux環境變量 shell變量 command not found解決方法

在Ubuntu中有以下幾個文件能夠設置環境變量
一、/etc/profile:在登陸時,操做系統定製用戶環境時使用的第一個文件,此文件爲系統的每一個用戶設置環境信息,當用戶第一次登陸時,該文件被執行。
二、/etc/environment:在登陸時操做系統使用的第二個文件,系統在讀取你本身的profile前,設置環境文件的環境變量。
三、~/.bash_profile: 在登陸時用到的第三個文件是.profile文件,每一個用戶均可使用該文件輸入專用於本身使用的shell信息,當用戶登陸時,該 文件僅僅執行一次!默認狀況下,他設置一些環境變遊戲量,執行用戶的.bashrc文件。/etc/bashrc:爲每個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取.
四、~/.bashrc:該文件包含專用於你的bash shell的bash信息,當登陸時以及每次打開新的shell時,該該文件被讀取。 java

 


幾個環境變量的優先級 c++

1>2>3 shell


設置永久環境變量 bash

1.環境變量配置中,要先刪除.bash_profile中的三行關於.bashrc的定義,而後把環境變量配置在.bashrc中
2.選擇要使用的java環境:update-alternatives –config java
3.要使得剛修改的環境變量生效:source .bashrc
4.查看環境變量:env less

能夠放到/etc/bash/bashrc,這樣就是系統級的 tcp

 

一、在用LINUX命令時爲何別人的計算機能用本身的不能用呢,實際上是本身的系統環境變量沒有添加,最笨的方法就是進入到相應的文件夾下在執行這個命令,這樣命令就起效了 函數

例如fdisk命令就須要在相應文件夾/sbin/下輸入指令 ./fdisk   就出現你要看的東西了 工具

再如ifconfig命令須要在文件夾/sbin/下指執行./ifconfig就出現你要看的東西了 ui

./bin:

bin爲binary的簡寫主要放置一些系統的必備執行檔例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。

/usr/bin:
主 要放置一些應用軟體工具的必備執行檔例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m四、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。


/sbin:
主要放置 一些系統管理的必備程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。



/usr/sbin:
放置一些網路管理的必備程式例如:dhcpd、htpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。


能夠在家目錄下查看.bash_profile裏的PATH。若是是:PATH=$PATH:$HOME/bin則須要添加成以下:

PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin

[注]本人又添加了一條命令才能執行,不一樣狀況不一樣分析哈:
export PATH=$PATH:/sbin
spa


二、常在/etc/profile文件中修改環境變量,在這裏修改的內容是對全部用戶起做用的。

  如下主要操做將在該文件中進行。

 三、如何添加環境變量。

  例如添加「NAME=liheng」 。

  在profile文件的最後添加以下內容export NAME=liheng

  變量值liheng能夠加引號也能夠不加,效果同樣。

  四、在profile文件添加或修改的內容須要註銷系統才能生效。

  五、重複定義變量怎樣理解。

  常常出現的是對PATH變量的定義。

 例如:在peofile文件默認對PATH變量都有設置PATH=¥¥¥¥¥¥¥,在之後可能在對PATH設置,通常都加在profile文件的最後 PATH=······(打個比方)。而系統之中認定的PATH=·······¥¥¥¥¥¥¥¥¥,也就是說相同名字的環境變量,後寫入的先起做用。大 家必定要注意。

  六、特殊字符介紹。

  例如在profile中有以下內容,經過如下內容說明特殊符號的用法。

  export A=/q/jing:aaa/cc/ld

  export B=.:/liheng/wang

  export A=/cd/cdr:$A

  你們注意紅色的符號:

  : 表示並列含義,例如A變量值有多個,用:符號進行分離。

  . 表示你操做的當前目錄。例如pap命令會查找B環境變量。

  在/home鍵入pap命令,系統首先在/home目錄下(即當前路徑)查找關於 B 的內容,若是沒有在/liheng/wang目錄下查找關於B的內容。

  $ 表示該變量本次定義以前的值,例如$A表明/q/jing:aaa/cc/ld。也就是說

  A=/cd/cdr:/q/jing:aaa/cc/ld
  七、使用env命令顯示全部的環境變量 。在命令提示符下鍵入env就好了。

  set命令顯示全部本地定義的Shell變量。

  八、常見的環境變量

  PATH:決定了shell將到哪些目錄中尋找命令或程序

  HOME:當前用戶主目錄

  MAIL:是指當前用戶的郵件存放目錄。

  SHELL:是指當前用戶用的是哪一種Shell。

  HISTSIZE:是指保存歷史命令記錄的條數

  LOGNAME:是指當前用戶的登陸名。

  HOSTNAME:是指主機的名稱,許多應用程序若是要用到主機名的話,一般是從這個環境變量中來取得的。

  LANG/LANGUGE:是和語言相關的環境變量,使用多種語言的用戶能夠修改此環境變量。

  PS1:是基本提示符,對於root用戶是#,對於普通用戶是$。

  PS2:是附屬提示符,默認是「>」。能夠經過修改此環境變量來修改當前的命令符,好比下列命令會將提示符修改爲字符串「Hello,My NewPrompt :) 」。

  # PS1=" Hello,My NewPrompt :) "

  九、使用修改.bashrc文件進行環境變量的編輯,只對當前用戶有用。

  使用修改 /etc/profile 文件進行環境變量的編輯,是對全部用戶有用。你們必定要注意區別。

  十、profile文件在系統啓動時將被運行。你們能夠在裏面加入其餘命令,可是必定要加正確,否則的話系統會啓動不起來的。

環境變量是和 Shell 緊密相關的,用戶登陸系統後就啓動了一個 Shell 。對於 Linux 來講通常是 bash ,但也能夠從新設定或切換到其它的 Shell 。根據發行版本的狀況, bash 有兩個基本的系統級配置文件: /etc/bashrc /etc/profile 。這些配置文件包含兩組不一樣的變量: shell 變量和環境變量。前者只是在特定的 shell 中固定(如 bash ),後者在不一樣 shell 中固定。很明顯, shell 變量是局部的,而環境變量是全局的。環境變量是經過 Shell 命令來設置的,設置好的環境變量又能夠被全部當前用戶所運行的程序所使用。對於 bash 這個 Shell 程序來講,能夠經過變量名來訪問相應的環境變量,經過 export 來設置環境變量。下面經過幾個實例來講明。

3.1 使用命令echo 顯示環境變量

 

 

#本例使用echo顯示常見的變量HOME

$ echo $HOME  

/home/lqm

 

 

3.2 設置一個新的環境變量

 

$ export HELLO=」Hello!」

$ echo $HELLO

Hello!

 

 

3.3 使用 env 命令顯示全部的環境變量

 

 

$ env

SSH_AGENT_PID=1875

HOSTNAME=lqm

SHELL=/bin/bash

TERM=xterm

HISTSIZE=1000

……

 

 

3.4 使用 set 命令顯示全部本地定義的 Shell 變量

 

 

$ set

BASH=/bin/bash

……

 

 

3.5 使用 unset 命令來清除環境變量

 

 

$ export TEST=」test」     # 增長一個環境變量 TEST

$ env | grep TEST          # 此命令有輸出,證實環境變量 TEST 已經存在了

TEST=test

$ unset $TEST                # 刪除環境變量 TEST

$ env | grep TEST           # 此命令無輸出,證實環境變量 TEST 已經存在了

 

 

3.6 使用 readonly 命令設置只讀變量

若是使用了 readonly 命令的話,變量就不能夠被修改或清除了。示例以下:

 

 

$ export TEST="Test..."                                        # 增長一個環境變量 TEST

$ readonly TEST                                                   # 將環境變量 TEST 設爲只讀

$ unset TEST                                                         # 會發現此變量不能被刪除

-bash: unset: TEST: cannot unset: readonly variable
$ TEST="New"                                                    #
會發現此變量不能被修改

-bash: TEST: readonly variable

 

 

3.7 C 程序來訪問和設置環境變量

對於 C 程序的用戶來講,可使用下列三個函數來設置或訪問一個環境變量。

getenv() 訪問一個環境變量。輸入參數是須要訪問的變量名字,返回值是一個字符串。若是所訪問的環境變量不存在,則會返回 NULL

setenv() 在程序裏面設置某個環境變量的函數。

unsetenv() 清除某個特定的環境變量的函數。

另外,還有一個指針變量 environ ,它指向的是包含全部的環境變量的一個列表。下面的程序能夠打印出當前運行環境裏面的全部環境變量:

 

 

#include

extern char**environ;

int main ()

{

char**var;

for (var =environ;*var !=NULL;++var)

printf ("%s \n ",*var);

return 0;

}

 

 

3.8       經過修改環境變量定義文件來修改環境變量。

須要注意的是,通常狀況下,這僅僅對於普通用戶適用,避免修改根用戶的環境定義文件,由於那樣可能會形成潛在的危險。

 

 

$cd                                   # 到用戶根目錄下

$ls -a                                  # 查看全部文件,包含隱藏的文件

$vi .bash_profile                   # 修改環境變量定義文件

 

 

而後編輯你的 PATH 聲明,其格式爲:

PATH=$PATH: : : :------:

你能夠本身加上指定的路徑,中間用冒號隔開。環境變量更改後,在用戶下次登錄時生效,若是想馬上生效,則可執行下面的語句:$ source .bash_profile

須要注意的是,最好不要把當前路徑 」./」 放到 PATH 裏,這樣可能會受到意想不到的攻擊。完成後,能夠經過 $ echo $PATH 查看當前的搜索路徑。這樣定製後,就能夠避免頻繁的啓動位於 shell 搜索的路徑以外的程序了。

4 總結

    經過以上的設置,你能夠有一個比較方便有效的環境來提升你的工做效率了。

相關文章
相關標籤/搜索