1. 程式人生 > >Linux 使用者環境變數的設定

Linux 使用者環境變數的設定

環境

Linux:centos6.5
工具:CRT

前言

最近在伺服器上遇到了這麼一個問題:

1、有兩個賬號:developerwebuser
其中webuser使用者可以直接使用play命令,比如可以執行:

[[email protected]10-10-104-111 ~]$ play version
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2
.7, http://www.playframework.org ~ framework ID is ggservicemanager ~ 1.2.7

而使用者developer卻不能使用,會報play命令找不到。

原因

這裡我先貼出 具體原因,後面再簡單分析下;

原因是:webuser 使用者 其在~/.bash_profile目錄中進行設定:

PATH=$PATH:$HOME/bin
GGOPENAPI_HOME=$HOME/gogoal_platform/ggopenapi

export PATH=$PATH:$GGOPENAPI_HOME:/data/play.1.2.7

developer

使用者,並沒有相應的設定;

分析

那麼問題來了 ~/.bash_profile,是啥?

使用者級檔案

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

~/.bashrc:該檔案包含專用於你的bash shell的bash資訊,當登入時以及每次開啟新的shell時,該該檔案被讀取。不推薦放到這兒,因為每開一個shell,這個檔案會讀取一次,效率 上講不好。

~/.bash_profile:每個使用者都可使用該檔案輸入專用於自己 使用的shell資訊,當用戶登入時,該檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案。~/.bash_profile 是互動式、login 方式進入 bash 執行的~/.bashrc是互動式 non-login 方式進入 bash 執行的通常二者設定大致相同,所以通常前者會呼叫後者。

~./bash_login

:不推薦使用這個,這些不會影響圖形介面。而且.bash_profile優先順序比bash_login高。當它們存在時,登入shell啟動時會讀取它們。

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

~/.pam_environment:使用者級的環境變數設定檔案。

系統級檔案

/etc/profile:在登入時,作業系統定製使用者環境時使用的第一個檔案,此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行。並從/etc/profile.d目錄的配置檔案中搜集shell的設定。這個檔案一般就是呼叫/etc/bash.bashrc檔案。

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

/etc/environment: 在登入時作業系統使用的第二個檔案,系統在讀取你自己的profile前,設定環境檔案的環境變數。

/etc/profile與/etc /enviroment的比較

首先來做一個實驗:

先將export LANG=zh_CN加入/etc/profile ,退出系統重新登入,登入提示顯示英文。將/etc/profile中的export LANG=zh_CN刪除,將LNAG=zh_CN加入/etc/environment,退出系統重新登入,登入提示顯示中文。

使用者環境建立的過程中總是先執行/etc/profile然後在讀取/etc/environment。為什麼會有如上所敘的不同呢?

應該是先執行/etc/environment,後執行/etc/profile

/etc/environment是設定整個系統的環境,而/etc/profile是設定所有使用者的環境,前者與登入使用者無關,後者與登入使用者有關。

系統應用程式的執行與使用者環境可以是無關的,但與系統環境是相關的,所以當你登入時,你看到的提示資訊,比如日期、時間資訊的顯示格式與系統環境的LANG是相關的,預設LANG=en_US,如果系統環境LANG=zh_CN,則提示資訊是中文的,否則是英文的。

對於使用者的SHELL初始化而言是先執行/etc/profile, 再讀取檔案/etc/environment.

對整個系統而言是先執行/etc/environment。這樣理解正確嗎?

/etc/enviroment -->/etc/profile --> $HOME/.profile -->$HOME/.env (如果存在) 

/etc/profile 是所有使用者的環境變數

/etc/enviroment是系統的環境變數

登陸系統時shell讀取的順序應該是

/etc/profile ->/etc/enviroment -->$HOME/.profile-->$HOME/.env 

原因應該是使用者環境和系統環境的區別了

如果同一個變數在使用者環境(/etc/profile)和系統環境(/etc/environment) 有不同的值那應該是以使用者環境為準了

在shell中執行程式時,shell會提供一組環境變數。export可新增,修改或刪除環境變數,供後續執行的程式使用。export的效力僅及於該此登陸操作

在登入Linux時要執行檔案的過程如下:

在剛登入Linux時,首先啟動/etc/profile 檔案,然後再啟動使用者目錄下的 ~/.bash_profile~/.bash_login~/.profile檔案中的其中一個,執行的順序為:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile檔案存在的話,一般還會執行 ~/.bashrc檔案。因為在 ~/.bash_profile檔案中一般會有下面的程式碼:

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions

所以,~/.bashrc會呼叫/etc/bashrc檔案。最後,在退出shell時,還會執行~/.bash_logout檔案。

執行順序為:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc-> /etc/bashrc -> ~/.bash_logout

設定環境變數的方法

由以上分析可知:

/etc/profile全域性的,隨系統啟動設定【設定這個檔案是一勞永逸的辦法】

/root/.profile/home/myname/.profile只對當前視窗有效。

/root/.bashrc/home/yourname/.bashrc隨系統啟動,設定使用者的環境變數【平時設定這個檔案就可以了

~/.profile和~/.bash_profile區別

.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)兩個檔案是.bash_profile的同義詞,目的是為了相容其它Shell。在Debian中使用.profile檔案代 替.bash_profile檔案。

參考地址:

相關推薦

java linux(ubuntu) 環境變數設定

一https://www.cnblogs.com/hanshuai/p/9604730.html :whereis java //查詢java 安裝路徑:which java //查詢java 執行路徑:ls -lrt /usr/bin/java :ls -lrt

Linux JAVA環境變數設定(Linux JDK安裝)

1.安裝之前請確認是否有系統自帶的JDK 命令檢視是否有安裝JDK: shell> rpm -qa|grep jdk 解除安裝已安裝的JDK shell> yum -y remove java-1.6.0-openjdk-1.6.0.

Linux環境變數設定.bashrc及相關

假定想新增的環境變數路徑為:/opt/my-tools/Android-sdk/tools 1 進入使用者的根目錄 cd   $HOME  或 cd ~ 2 然後開啟.bashrc若不存在則新建.bashrc檔案 vim   .bashrc 3 在.bashrc頁面最後加上想要加的路徑 export

Linux qt環境變數設定

ftp://ftp.trolltech.com/qt/source/  下載 qt-x11-opensource-src-4.5.1.tar.gz  我的qt是4.5.1,一切按預設進行,預設安裝路徑:/usr/local/Trolltech/Qt-4.5.1 解壓並安裝: # tar -zxvf qt-x1

一圖讓你理解Linux中的環境變數設定

本文首先介紹了環境變數的通俗理解,然後給出了幾種不同設定方式的詳細解釋,與其他部落格不同,本部落格通過一張圖總體描述不同設定方式的作用範圍,生效時間。最後通過一個具體的例子說明了環境變數的設定格式。 什麼是環境變數 所謂的環境變數有時候是一種“快捷方式”,有時候又是

linux環境變數設定

環境變數配置檔案 環境配置檔案有以下幾個: 1.etc/profile : 在登入時,作業系統定製使用者環境時使用的第一個檔案 ,此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行。 2./etc /environment : 在登入時作

linux 環境變數設定方法總結(PATH/LD_LIBRARY_PATH)【轉】

PATH和LD_LIBRARY_PATH本質都是變數,所謂變數的意思就是由別人賦值產生的,直覺往往會讓我們新增和減少這個變數本身的某些路徑,實際上這是不正確的。正確的做法是我們要去修改賦予這個變數數值的那些配置檔案,加一條路徑或者減一條。說到底變數只關乎顯示,不關乎其

Linux環境變數設定/etc/profile、/etc/bashrc、~/.profile、~/.bashrc區別

轉載請註明作者和出處:http://blog.csdn.net/c406495762/article/details/62902871 登入系統讀取步驟: 當登入系統時候獲得一個shell程序時,其讀取環境設定檔有三步 : 1.首先讀入的是全域性環境變數設定檔/etc/

linux下編譯、連線及執行時環境變數設定(boost庫為例)

以boost庫的存放目錄/usr/boost為例, 開啟/etc/profile, 追加以下內容(前兩行為編譯時路徑): export CPLUS_INCLUDE_PATH=/usr/boost/include:$CPLUS_INCLUDE_PATH export LIB

arm-linux-gcc安裝及自定義bash指令碼環境變數設定

2。 解壓 arm-linux-gcc-3.4.1.tar.bz2   #tar -jxvf arm-linux-gcc-3.4.1.tar.bz2   解壓過程需要一段時間,解壓後的檔案形成了 usr/local/ 資料夾,進入該資料夾,將   arm資料夾拷貝到/usr/local/下   # cd

Linux系統環境變數和別名設定(永久生效和臨時生效)

1.Linux的變數種類   按變數的生存週期來劃分,Linux變數可分為兩類:  1.1 永久的:需要修改配置檔案,變數永久生效。  1.2 臨時的:使用export命令宣告即可,變數在關閉shell時失效。 2.設定變數的三種方法  2.1 在/etc/profile檔

qt 嵌入式linux 環境變數設定

Qt-embedded-linux移植要點 原文位置:http://19831028.blog.51cto.com/1333653/432393 1、安裝qt對系統的要求 安裝qt的過程在不同的平臺上會有所不同,主要關嵌入式linux平臺上如何安裝。若需要提供對Ope

Linux 啟動環境變數PATH設定

本案例實現新增 ~/mypath/bin 到PATH環境變數。Ubuntu專有方式新增環境變數 編輯 /etc/ld.so.conf 檔案,如果以下語句不存在,則加入: include /etc/ld.so.conf.d/*.conf 然後在/etc/ld.so.conf.

linux環境變數設定的三種方法

login shell 和 no-login shell“login shell” 代表使用者登入, 比如使用 “su -“ 命令, 或者用 ssh 連線到某一個伺服器上, 都會使用該使用者預設 shell 啟動 login shell 模式.該模式下的 shell 會去自動

linux mktime函式會受當前環境變數設定的時區影響

mktime函式會受當前環境變數設定的時區影響, 比如tm初始化為 1970-1-1 00:00:00, 如果設定的是UTC時區 mktime 輸出 0 如果設定的是Shanghai時區 mktime 輸出 -22800 如果設定的是Tokyo時區 mktime 輸出

linux 環境變數設定方法總結

1. 顯示環境變數HOME   $ echo $HOME   /home/redbooks   2. 設定一個新的環境變數hello   $ export HELLO="Hello!"   $ echo $HELLO   Hello!   3. 使用env命令顯示所有的環境

linux 環境變數設定的幾種方式

 在 Linux 裡設定環境變數的方法 ( export PATH ) 一般來說,配置交叉編譯工具鏈的時候需要指定編譯工具的路徑,此時就需要設定環境變數。例如我的mips-linux-gcc編譯器在“/opt/au1200_rm /build_tools/bin”目錄下,build_tools就是我

LD_LIBRARY_PATH環境變數設定Linux動態庫查詢方法

轉自:http://james23dier.iteye.com/blog/763274   略有改動 在linux下的程式設計,毫無疑問的遲早都要用到LD_LIBRARY_PATH這個環境變數,不過這個環境變數是基於shell的,也就是說只有在當前設定了的shell裡才會

Linux 使用者環境變數設定

環境 Linux:centos6.5 工具:CRT 前言 最近在伺服器上遇到了這麼一個問題: 1、有兩個賬號:developer和webuser; 其中webuser使用者可以直接使用play命令,比如可以執行: [[email pr

linux環境變數設定

1、直接用export命令:#export PATH=$PATH:/opt/au1200_rm/build_tools/bin檢視是否已經設好,可用命令export檢視: [[email