1. 程式人生 > >Linux下環境變數配置

Linux下環境變數配置

在linux系統下,如果下載並安裝了應用程式,在啟動時很有可能在鍵入它的名稱時出現"command not found"的提示內容。如果每次都到安裝目標資料夾內,找到可執行檔案 來進行操作就太繁瑣了,這種情況下就涉及到環境變數PATH的設定問題,而PATH的設定也是在linux下定製環境變數的一個組成部分。

環境變數配置的兩個方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1)修改/etc/profile檔案

推薦使用這種方法,因為所有使用者的shell都有權使用這些環境變數,缺點是可能會給系統帶來安全性問題。 這裡是針對所有的使用者的,所有的shell;

[[email protected]test ~]# vim /etc/profile

....

export PATH=$PATH:/usr/local/mysql/bin

使用source命令使修改立刻生效: 

[[email protected]test ~]# source  /etc/profile

2)修改.bashrc檔案,這種方法更為安全,它可以把使用這些環境變數的許可權控制到使用者級別,這裡是針對某一個特定的使用者,如果需要給某個使用者許可權

使用這些環境變數,只需要修改其個人使用者主目錄下的.bashrc檔案就可以了。

[[email protected]test ~]# vim /root/.bashrc

export PATH=$PATH:/usr/local/mysql/bin

[[email protected]test ~]# source  /root/.bashrc

需要注意的是:在/etc/profile裡設定系統環境變數時,路徑末尾不能以"/"結尾,否則將導致整個PATH變量出錯。

1

2

3

4

5

6

7

8

9

10

11

12

[

[email protected]test ~]$ vim ~/.bashrc

......

KETTLE_HOME=/data/nstc/kettle3.2

export KETTLE_HOME

注意:配置好環境變數後,要記得export輸出這個變數,否則如下source後無效!

[[email protected]test ~]$ source .bashrc //使之生效

[[email protected]test ~]$ echo $KETTLE_HOME

/data/nstc/kettle3.2

[[email protected]test ~]$ env

.........

KETTLE_HOME=/data/nstc/kettle3.2

.bash_profile和.bashrc的區別:

1

2

3

4

5

6

7

/etc/profile: 此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行.並從/etc/profile.d目錄的配置檔案中搜集shell的設定.

/etc/bashrc:  為每一個執行bash shell的使用者執行此檔案.當bash shell被開啟時,該檔案被讀取.

~/.bash_profile: 每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,當用戶登入時,該檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案.

~/.bashrc: 該檔案包含專用於你的bash shell的bash資訊,當登入時以及每次開啟新的shell時,該該檔案被讀取.

~/.bash_logout: 當每次退出系統(退出bash shell)時,執行該檔案.

另外,/etc/profile中設定的變數(全域性)的可以作用於任何使用者,而~/.bashrc等中設定的變數(區域性)只能繼承/etc/profile中的變數,他們是"父子"關係.

=========================設定終端登入超時時間================

1

2

3

4

5

6

7

遠端登入linux伺服器,如何設定終端失效時間(即過了多久不操作,終端即將失效)。方法如下:

[[email protected] ~]# vim /etc/profile

......

export TMOUT=600

[[email protected] ~]# source /etc/profile

如上設定後,登入這臺伺服器的終端在10分鐘內不做操作,則該終端就將失效!

1、bash的配置檔案

1)、全域性配置與個人配置

全域性配置

        /etc/profile, /rtc/profile.d/*.sh,/etc/bashrc

個人配置       

        ~/.bash_profile, ~/.bashrc

2)、各配置檔案解析:

/etc/profile:此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,

該檔案被執行,並從/etc/profile.d目錄的配置檔案中搜集shell的設定,

/etc/bashrc:為每一個執行bash shell的使用者執行此檔案,當bash shell被開啟時,該檔案被讀取。

~/.bash_profile:每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,

當用戶登入時,該檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案。

~/.bashrc:該檔案包含專用於你的bash shell的bash資訊,當登入時以及每次開啟新的shell時,該檔案被讀取。

3)、profile類的檔案與basrc類的檔案區別:

profile類的檔案:

        設定環境變數

        執行命令或指令碼  

(1) 資料庫例項

      export ORACLE_SID=AMLDB

(2)資料庫主目錄

export ORACLE_HONE=/oracle/product/11.2.4/db

(3)字符集屬性設定,英文,中文字符集

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

或export NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

或export NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8

basrc類的檔案: 

        設定本地變數

        定義命令別名

4)、shell如何讀取配置檔案

登入式shell如何讀取配置檔案

/etc/profile -->/etc/profile.d/*.sh

-->~/.bash_profile --> ~/.bashrc -->/etc/bashrc                    

非登入式shell如何配置檔案

 ~/.bashrc -->/etc/bashrc-->/etc/profile.d/*.sh   

2export臨時匯入環境變數

$PATH:決定了shell將到哪些目錄中尋找命令或程式,PATH的值是一系列目錄,當您執行一個程式時,Linux在這些目錄下進行搜尋編譯連結。

編輯你的 PATH 宣告,其格式為:

PATH=$PATH:PATH 1:PATH 2:PATH 3: ... :PATH N

其中PATH N 為自己加上指定路徑,中間用冒號隔開。環境變數更改後,在使用者下次登陸時生效,如果想立刻生效,則可執行下面的語句:$ source .bash_profile

完成後,可以通過 $ echo $PATH 或者 export命令檢視當前的搜尋路徑。

這樣定製的好處在於可以避免頻繁的啟動位於 shell 搜尋的路徑之外的程式

注意:該方法新增的PATH 在終端關閉後就會消失。

例項1export命令將新變數新增到環境中   

[[email protected] test ~]$ export -p         #顯示當前環境

declare -x CVS_RSH="ssh"

...

declare -x HISTSIZE="1000"

declare -x HOME="/home/gz_fieldyang"...

declare -x PATH="/usr/local/git/bin.../home/gz_fieldyang/bin:"

...

[[email protected] test ~]$ echo $PATH     #檢視當前路徑

/usr/local/git/bin.../home/gz_fieldyang/bin

[[email protected] test ~]$ PATH=$PATH:/USER/LOCAL/BIN:/THIS/IS/A/TEST #更新PATH

[[email protected] test ~]$ export PATH    #匯出PATH

[[email protected] test ~]$ export 

...

declare -x PATH="/usr/local/git/bin.../home/gz_fieldyang/bin:/USER/LOCAL/BIN:/THIS/IS/A/TEST"

...

3永久生效

可以通過編輯/etc/profile來改PATH,也可以改家目錄下的.bashrc(即:~/.bashrc)     

例項2:export命令將新變數新增到環境中(永久生效)     

[[email protected] test ~]$ readonly hours_per_day=24   #定義變數並賦值

[[email protected] test ~]$ export PATH=$PATH:/usr/local/bin #更新PATH

[[email protected] test ~]$ export PATH 

[[email protected] test ~]$ export -P

[[email protected] test ~]$ echo $PATH

/usr/local/git/bin.../home/gz_fieldyang/bin:/usr/local/bin

[[email protected] test ~]$ echo $hours_per_day                                         

24

[[email protected] test ~]$ vim /etc/profile

...

export PATH="$PATH:/usr/local/bin"

:wq

[[email protected] test ~]$ source /etc/profile

不報錯則成功。

[[email protected] test ~]$ vi .bashrc

# .bashrc

# Source global definitions

if [ -f /etc/bashrc ]; then

        . /etc/bashrc

fi

# User specific aliases and functions

export PATH="$PATH:/usr/local/bin"

[[email protected] test ~]$ source .bashrc

不報錯則成功。