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

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

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

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

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


/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等。 

less

/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:/sbintcp


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

【ps: 如下主要操做將在/etc/profile文件中進行】函數

三、如何添加環境變量。 
  例如,添加 「NAME=liheng」  
  在profile文件的最後添加以下內容export NAME=Ancle

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

四、/etc/profiile文件中添加或修改的內容,要想生效,必須(二選一):工具

    a. 註銷或重啓系統ui

    b. 執行: source /etc/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變量值有多個,用:符號進行分離。 

  . 表示你操做的當前目錄。例如: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文件在系統啓動時將被運行。你們能夠在裏面加入其餘命令,可是必定要加正確,否則的話系統會啓動不起來的。spa


環境變量是和 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 總結

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

相關文章
相關標籤/搜索