Linux 使用者環境變數的設定
環境
Linux:centos6.5
工具:CRT
前言
最近在伺服器上遇到了這麼一個問題:
1、有兩個賬號:developer
和webuser
;
其中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_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