當前位置:首頁 » 編程軟體 » shell腳本引用全局環境變數

shell腳本引用全局環境變數

發布時間: 2022-11-06 05:40:57

① 如何通過shell腳本設置全局的環境變數

如何通過shell腳本設置全局的環境變數

-bash-3.00# env
HZ=100
LC_MONETARY=en_US.ISO8859-1
SHELL=/usr/bin/bash
TERM=ansi
LC_NUMERIC=en_US.ISO8859-1
MAIL=/var/mail/pc
PATH=/usr/sbin:/usr/bin:.
LC_MESSAGES=C
LC_COLLATE=en_US.ISO8859-1
PWD=/export/home/pc
TZ=PRC
SHLVL=1
HOME=/export/home/pc
LOGNAME=pc
LC_CTYPE=en_US.ISO8859-1
LC_TIME=en_US.ISO8859-1
_=/usr/bin/env

如果只想看指定的變數設置,如路徑PATH的設置,可以用 "echo $PATH"或 「 env | grep PATH"或」 env | grep -i path"來查詢。前面的適合知道全名的,後面2種適合只知道部分欄位或者部分關鍵字母(甚至不確定字元大小寫)的。
-bash-3.00# echo $PATH
/usr/sbin:/usr/bin:.
-bash-3.00# env | grep PATH
PATH=/usr/sbin:/usr/bin:.

② 如何在shell腳本中使用變數

在網路中 搜索 linux 系統中使用變數 關鍵詞 ,有問題網路。 下面是我查的示例。


  1. 顯示環境變數HOME


$ echo $HOME

/home/redbooks

2. 設置一個新的環境變數hello

$ export HELLO="Hello!"

$ echo $HELLO

Hello!

3. 使用env命令顯示所有的環境變數

$ env

HOSTNAME=redbooks.safe.org

PVM_RSH=/usr/bin/rsh

Shell=/bin/bash

TERM=xterm

HISTSIZE=1000

...

4. 使用set命令顯示所有本地定義的Shell變數

$ set

BASH=/bin/bash

BASH_VERSINFO=([0]="2"[1]="05b"[2]="0"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")

BASH_VERSION='2.05b.0(1)-release'

COLORS=/etc/DIR_COLORS.xterm

COLUMNS=80

DIRSTACK=()

DISPLAY=:0.0

...

5. 使用unset命令來清除環境變數

set可以設置某個環境變數的值。清除環境變數的值用unset命令。如果未指定值,則該變數值將被設為NULL。示例如下:

$ export TEST="Test..." #增加一個環境變數TEST

$ env|grep TEST #此命令有輸入,證明環境變數TEST已經存在了

TEST=Test...

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

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

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

環境變數的設置位於/etc/profile文件

如果需要增加新的環境變數可以添加下屬行

export path=$path:/path1:/path2:/pahtN

-----------------------------------------------------------------------------------------------------------------------

1.Linux的變數種類

按變數的生存周期來劃分,Linux變數可分為兩類:

1.1 永久的:需要修改配置文件,變數永久生效。

1.2 臨時的:使用export命令聲明即可,變數在關閉shell時失效。

2.設置變數的三種方法

2.1 在/etc/profile文件中添加變數【對所有用戶生效(永久的)】

用VI在文件/etc/profile文件中增加變數,該變數將會對Linux下所有用戶有效,並且是「永久的」。

例如:編輯/etc/profile文件,添加CLASSPATH變數

# vi /etc/profile

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

註:修改文件後要想馬上生效還要運行# source /etc/profile不然只能在下次重進此用戶時生效。

2.2 在用戶目錄下的.bash_profile文件中增加變數【對單一用戶生效(永久的)】

用VI在用戶目錄下的.bash_profile文件中增加變數,改變數僅會對當前用戶有效,並且是「永久的」。

例如:編輯guok用戶目錄(/home/guok)下的.bash_profile

$ vi /home/guok/.bash.profile

添加如下內容:

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

註:修改文件後要想馬上生效還要運行$ source /home/guok/.bash_profile不然只能在下次重進此用戶時生效。

2.3 直接運行export命令定義變數【只對當前shell(BASH)有效(臨時的)】

在shell的命令行下直接使用[export 變數名=變數值] 定義變數,該變數只在當前的shell(BASH)或其子shell(BASH)下是有效的,shell關閉了,變數也就失效了,再打開新shell時就沒有這個變數,需要使用的話還需要重新定義。

3.環境變數的查看

3.1 使用echo命令查看單個環境變數。例如:

echo $PATH

3.2 使用env查看所有環境變數。例如:

env

3.3 使用set查看所有本地定義的環境變數。

unset可以刪除指定的環境變數。

4.常用的環境變數

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

HOME 當前用戶主目錄

HISTSIZE歷史記錄數

LOGNAME 當前用戶的登錄名

HOSTNAME指主機的名稱

SHELL 當前用戶Shell類型

LANGUGE 語言相關的環境變數,多語言可以修改此環境變數

MAIL當前用戶的郵件存放目錄

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

③ Shell之環境變數、局部變數

變數可分為兩類:

環境變數又被稱為全局變數,可以在創建的shell以及任意子進程shell中使用。局部變數只能在創建的shell腳本中使用。

環境變數用於定義Shell的運行環境,保證Shell命令的正確執行,Shell通過環境變數來確定登錄的用戶名、登錄目錄等。所有的環境變數都是系統的全局變數,可用於所有的子進程中。

環境變數可以在命令行中設置,但用戶退出後這些變數值也會隨之丟失,所以最好在下面的文件或者目錄中配置,每次用戶登錄都將會被初始化:

環境變數可用在任意的Shell進程中,環境變數名一般大寫,並且是已經使用export內置命令進行了導出。比如HOME、PATH、UID、USER等,在用戶登陸之前已經本/bin/login程序設置好了。

下面是常見的系統環境變數:

更多詳情請通過env命令查看:

如果設置想自己設置環境變數,有臨時生效和永久生效兩種:

在.bash_profile或者/etc/profile文件中使用export導出變數,然後使用"."或者source命令使其生效。

系統的內置的環境變數或者自定義的環境變數可以通過echo或者printf進行列印:

對於有哪些變數使用env(上述已經說過)或者set命令:

使用unset取消變數,不要隨意使用,尤其是系統環境變數:

局部變數的生命周期是當前的Shell腳本,如果啟動另一個Shell進程或者退出當前Shell進程,變數就會丟失。

局部變數又三種定義方式:

變數名一般以字母、數字、下劃線組成,其中以字母開頭。

為了更好的說明上面定義的三種方式,即不加引號、加單引號、加雙引號的區別,以下面的例子說明:

上述a、b、c輸出為:

在上面的基礎上如果變成下面的例子:

a、b、c的輸出有時什麼呢?

從上面的例子中可以看出第一種定義a變數的方式(不帶引號),內容一般為簡單連續的數字、字元串等;第二種定義b變數的方式(單引號)所見即所得,內容原樣輸出;第三種定義c變數的方式(雙引號),輸出變數時引號中變數會經過解析後輸出。

所以,腳本中單純的數字可以不使用引號,但是其它普通字元串盡量使用雙引號。

系列教程:

Python虛擬環境搭建-學習視頻教程-騰訊課堂ke.qq.com

④ 如何在shell腳本中使用變數

1、linux shell中的變數一般定義格式為:var=value。其中var是變數名稱,=是賦值,value是給變數賦的值。比如下面的變數定義。

a=12;
b="helloworld"

2、注意變數名稱的第一個字元不可以是數字,但是可以是下劃線。如下示例則為非法的變數名。

3、要使用變數的值,在變數前面加上$符號即可。比如下面的示例:

123=123//這是錯誤的變數名稱
_123=123//這是合法的。

⑤ shell的環境變數,本地變數,位置變數有什麼區別 想請教,詳細點

環境變數:全局變數,所有shell腳本可見。
本地變數:普通變數,當前腳本可見,對引用該腳本的腳本也可見。
位置變數:用於處理命令行傳遞給shell腳本的參數,比如test.sh腳本,用命令「sh test.sh 1 2 3」執行該腳本,則位置變數$1指代1,$2指代2,$3指代4,$0指代腳本名稱test.sh。
希望對你有用。

⑥ 我想請教一下,powershell的腳本之間如何傳遞全局變數。

首先告訴你,沒有直接的方法。
可以考慮間接的方法:
1.如果你的變數僅僅是一個string,可以通過腳本A保存在環境變數裡面,然後在B中更改,通過A繼續讀取。
2.如果你的變數是一個復雜對象,可以在A中定義,$a, 然後以參數的形式傳遞給B,最後以返回值的形式傳遞給A。
形如: $a= .\test.ps1 -Name "mosser"

⑦ unix系統環境變數與shell腳本中的環境變數關系

腳本中當然可以使用環境變數了,$HOME也是環境變數.
你說'在腳本中使用$APPDIR則會無用',這我有點懷疑,你是不是沒使環境變數生效,
在$HOME目錄運行". .profile"或重新登入用戶可使新定義的環境變數生效.

完後,你在shell腳本中寫下"echo "HOME=$HOME and APPDIR=$APPDIR" 試試.

⑧ shell腳本

Shell腳本基本知識
概述:shell其實是內核與用戶之間的一個介面,
shell腳本
如果有一系列經常使用的linux命令,你可以把它們存儲在一個文件腫。shenll可以讀取這個文件,並執行其中的命令。這樣的文件成為腳本文件。
執行shell腳本
要創建一個shell腳本,你要使用任何編輯器比如vi在文本文件中編寫他。
為了使用bashshell賴執行腳本magic,其命令是:bashmagic或者./magic
echo命令:
echo「!」
屏幕上就會回顯「!」
#符號
用於在shell腳本腫可以包含註解入口
echo「hello」
#thisisacommentline.thiswouldnotproceanyoutput!
echo「world!」
第二行是一個註解的例子。它將被shell忽略,而且不產生任何消息
變數:
可以在任何時間通過簡單的賦值來創建。
語法:
<variablename>-<value>
Linux中的所有變數都被當作字元串
引用變數:
$符號用於引用一個變數的內容
variable1=${variable2}
讀入值給變數
在執行shell腳本時,shell還允許用戶直接從鍵盤讀入一個值給變數,還可以使用read命令來作。
$readfname
本地和全局shell變數
局部變數
當引用shell時,只有創建它的shell能夠知道變數的存在
全局變數
稱為子shell
shell中創建的變數局部於創建它的shell,除非使用export命令特別指出是全局的。
環境變數:
通過改變這些變數的值,用戶能夠定製此環境
一些環境變數的例子是HOME,PATH,PS1,PS2,LOGNAME,SHLVL,及SHELL
HOME變數
Linux系統中的每個用戶都有一個相關的稱作HOME的目錄
當一個用戶登錄後,進入相應的HOME的目錄
$echo$HOME
PATH變數
包含一列用冒號定界的目錄的路徑名字,便於可執行程序的搜索。
PS1變數
PS1(PromptString1)變數包含了shell提示符,$符號
$PS1=「HELLO>」
HELLO>
PS2變數
是為第二個提示符設置值的環境變數
LOGNAME變數
包含用戶的注冊名字
$echo「${LOGNAME}」
SHLVL變數
該變數包含當前工作的shelllevel
SHELL變數
環境變數存儲了用戶預設的shell
env命令
可用來查看所有的已移出的環境變數表和它們各自的值!
命令替換
在單個命令行中使用多個命令的另外一種方法(非Pipes)是通過命令替換
echo「thedatais`date`」
expr命令
用於求之算術表達式。該命令的輸出被送到標准輸出
$expr4+5
將在屏幕上顯示9
算術展開:
你可以在$((…))中括一個表達式,用下面的命令來計算它的值;
$((expression))
example1
編寫一個shell腳本用於計算呼叫中心未應答的詢問的數量。該腳本應該接受一天那所報告的詢問的總數和應答的詢問的數量,以便計算未應答的詢問的數量。
所有未應答的詢問總數=所有詢問的總數-應答的詢問的數量
<!--[if!supportLists]-->※<!--[endif]-->※※※※※※※※※※※※※※※※※※※※※※※
條件執行
test和[]
求值表達式,並返回true(0)或false()
數值測試:
-eq等於則為真
-ne不等於則為真
-gt大於則為真
-ge大於等於則為真
-lt小於則為真
-le小於等於則為真
if構造
Linuxshell提供了循環和判定的構造,可以在shell腳本中使用
算術測試
結合if構造,它可以用於測試變數的數字值
串測試
test命令也可以用於字元串
=等於則為真
!=不相等則為真
-z字元串長度為零則為真
-n字元串長度不為零則為真
文件測試
test命令也可以用於檢查文件的狀態
-e文件存在則為真
-r文件存在並且可讀則為真
-w文件存在並且可寫則為真
-x文件存在並且可執行則為真
-s文件存在並且至少有一個字元則為真
-d文件存在並且為目錄則為真
-f文件存在並且為普通文件則為真
-c文件存在並且為字元型文件則為真
-b文件存在並且為塊特殊文件則為真
-a並且-o或者!非
exit命令
用於終止shell腳本的執行並返回到$提示符下
case。。。esac
shell腳本中使用的這個構造依據變數的值而執行一組特定指令
當變數的值和其中的一個值匹配的時候,就執行寫在該值下的一組命令。
example3
迭代
while構造
while<條件>
do
<命令(s)>
done
只有條件為真的時候,才能執行do與done之間的命令
until構造
until循環構造的求值模式於while循環相反
until循環將繼續執行直到求值的條件為真的時候
for構造
forvariable_namein<list_of_values>
do

done
for循環取一列值作為輸入並對循環中每個值執行循環
break和contineu命令
同其他語言中的用法
example4
控制進程的執行
請求後台處理
用於請求後台進程的符號是(&)
$wctempfile&
[1]2082
$vinewfile
檢查後台進程
ps(進程狀態)命令為每個當前的活動的每個進程產生一行入口。
終止後台進程
可用kill,如下所示
kill278
查看完成一個命令所花的時間
你可以使用time命令來查看一個命令從開始到結束所花的時間
timefine/etc–name「passwd」2>/dev/null/dev/null表明忽略錯誤信息。
管道的介紹
垂直條(|)是管道字元
它只是shell:「|」前面命令的輸出作為「|」之後命令的輸入發送
ls–l|more
用管道組合命令,功能強大

熱點內容
wemall微商城源碼 發布:2025-05-14 22:15:20 瀏覽:803
隆地優選交易密碼是什麼 發布:2025-05-14 21:53:23 瀏覽:94
強酸強鹼存儲櫃 發布:2025-05-14 21:45:16 瀏覽:564
車輛參數配置包括什麼 發布:2025-05-14 21:31:03 瀏覽:163
怎麼引入安卓項目 發布:2025-05-14 21:26:39 瀏覽:824
游戲輔編程 發布:2025-05-14 21:18:49 瀏覽:687
三菱plc一段二段密碼什麼意思 發布:2025-05-14 21:17:16 瀏覽:528
電腦開機密碼忘記了怎麼破解 發布:2025-05-14 21:09:40 瀏覽:57
pythondict格式 發布:2025-05-14 21:09:38 瀏覽:887
落葉片拍攝腳本 發布:2025-05-14 20:40:49 瀏覽:800