shell变量定义

简介: http://blog.csdn.net/longxibendi/article/details/6125075 set - 读写变量语法:set varName ?value?描述:返回变量varName的value的值,如果value被指定则将该值赋予varName,如果varName之前未被...

http://blog.csdn.net/longxibendi/article/details/6125075

set - 读写变量
语法:
set varName ?value?
描述:
返回变量varName的value的值,如果value被指定则将该值赋予varName,如果varName之前未被赋值,则将该值赋予varName
如果varName中存在(),则其被识别为数组元素,没有的话被认为是一个普通变量
举例:
1)将随机数存在变量r中
set r [expr rand()]
2)将短消息存在数组元素中
set anAry(msg) "Hello, World!"
另一种方式:
set elemName "msg"
set anAry($elemName) "Hello, World!"
3)将vb1的值赋予out
set in0 "small random"
set in1 "large random"
set vbl in[expr {rand() >= 0.5}]
set out [set $vbl]

 

unset----删除已定义变量
语法:
unset varName ?varName ...?
描述:
返回空字符串,该命令移除一个或者多个已定义变量,对于数组来说,如果unset array(i),则对于其他元素没有影响,如果unset array,则该数组被删除
array set squares {
    1 1
    2 4
    3 9
    4 16
    5 25
}
unset squares(1)
unset squares

 

 

set:显示(设置)shell变量 包括的私有变量以及用户变量,不同类的shell有不同的私有变量 bash,ksh,csh每中shell私有变量都不一样

env:显示(设置)用户变量变量

export:显示(设置)当前导出成用户变量的shell变量。

 

举个例子来讲:

  

[c-sharp] view plain copy
  1. [oracle@zhou3 ~]$ aaa=bbb --shell变量设定     
  2. [oracle@zhou3 ~]$ echo $aaa      
  3. bbb     
  4. [oracle@zhou3 ~]$ env| grep aaa --设置完当前用户变量并没有     
  5. [oracle@zhou3 ~]$ set| grep aaa  --shell变量有     
  6. aaa=bbb     
  7. [oracle@zhou3 ~]$ export| grep aaa --这个指的export也没导出,导出变量也没有     
  8. [oracle@zhou3 ~]$ export aaa   --那么用export 导出一下     
  9. [oracle@zhou3 ~]$ env| grep aaa  --发现用户变量内存在了     
  10. aaa=bbb  

 

总结:linux 分 shell变量(set),用户变量(env), shell变量包含用户变量,export是一种命令工具,是显示那些通过export命令把shell变量中包含的用户变量导入给用户变量的那些变量.

 

二:使用unset命令来清除环境变量,注意set env  export设置的变量,都可以用unset来清除的

 

[c-sharp] view plain copy
  1. 清除环境变量的值用unset命令。如果未指定值,则该变量值将被 设为NULL。示  
  2. 例如下:    
  3. $ export TEST="Test..." #增加一个环境变量TEST    
  4. $ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了    
  5. TEST=Test...    
  6. $ unset $TEST #删除环境变量TEST    
  7. $ env|grep TEST #此命令没有输出,证明环境变量TEST已经不存在了  

 

三:使用readonly命令设置只读变量

[c-sharp] view plain copy
  1. 使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:  
  2. $ export TEST="Test..." #增加一个环境变量TEST  
  3. readonly TEST #将环境变量TEST设为只读  
  4. $ unset TEST #会发现此变量不能被删除  
  5. -bash: unset: TEST: cannot unset: readonly variable  
  6. $ TEST="New" #会发现此也变量不能被修改  
  7. -bash: TEST: readonly variable  

 

四:最根本的设置、更改变量的配置文件 ~/.bash_profile   ~/.bashrc   ~/.bash_logout

~/.bash_profile  用户登录时被读取,其中包含的命令被执行

~/.bashrc  启动新的shell时被读取,并执行

~/.bash_logout  shell 登录退出时被读取

 

此外,shell(这里指bash)的初始化过程是这样的:

1.bash 检查文件/etc/profile 是否存在

2. 如果存在,bash 就读取该文件,否则,跳过

3.bash 检查主目录下的文件.bash_profile 是否存在。

4. 如果存在,bash 就读取該文件,否则,跳过

5.bash 检查主目录下的.bash_login 是否存在。

6. 如果存在,bash 就读取该文件,否则,跳过

7.bash 检查主目录下的文件.profile 是否存在

8. 如果存在, bash 就读取该文件,否则,跳过。

这些步骤都执行完后,就出现提示符了, ksh 默认提示符是 $.

 

 

五:常见的shell变量

PATH 这个变量包含了一系列由冒号分隔开的目录,系统就从这些目录里寻找可执行文件。如果你输入的可执行文件(例如ls、rc-update或者emerge) 不在这些目录中,系统就无法执行它(除非你输入这个命令的完整路径,如/bin/ls)。 
ROOTPATH 这个变量的功能和PATH相同,但它只罗列出超级用户(root)键入命令时所需检查的目录。 
LDPATH 这个变量包含了一系列用冒号隔开的目录,动态链接器将在这些目录里查找库文件。
MANPATH 这个变量包含了一系列用冒号隔开的目录,命令man会在这些目录里搜索man页面。 
INFODIR 这个变量包含了一系列用冒号隔开的目录,命令info将在这些目录里搜索info页面。 
PAGER 这个变量包含了浏览文件内容的程序的路径(例如less或者more)。 
EDITOR 这个变量包含了修改文件内容的程序(文件编辑器)的路径(比如nano或者vi)。 
KDEDIRS 这个变量包含了一系列用冒号隔开的目录,里面放的是KDE相关的资料。
CONFIG_PROTECT 这个变量包含了一系列用空格隔开的目录,它们在更新的时候会被Portage保护起来。
CONFIG_PROTECT_MASK 这个变量包含了一系列用空格隔开的目录,它们在更新的时候不会被Portage保护起来。

 

 

PATH:决定了shell将到哪些目录中寻找命令或程序
HOME:当前用户主目录
MAIL:是指当前用户的邮件存放目录。
SHELL:是指当前用户用的是哪种Shell。
HISTSIZE:是指保存历史命令记录的条数
LOGNAME:是指当前用户的登录名。
HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
PS1:是基本提示符,对于root用户是#,对于普通用户是$。
PS2:是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,My NewPrompt :) ”。
# PS1=" Hello,My NewPrompt :) "

 

目录
相关文章
|
8天前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
1月前
|
Java Shell Linux
Shell 变量设置
Shell设置变量
38 5
|
1月前
|
Java Shell Linux
Shell 变量设置25-1
Shell编程语言是一种非类型的解释型语言,无需像C++/Java那样事先声明变量。通过赋值即可定义变量,在Linux支持的所有Shell中均适用。变量分为局部变量与环境变量,前者仅限于定义脚本内使用,后者可在其派生的子进程中使用。常见系统变量如$0表示当前程序名称,$n表示第n个参数(n=1,2,...,9),$*代表所有参数,$#代表参数个数,$?表示命令执行后的状态(0为成功),$UID为当前用户ID,$PWD表示当前目录。定义变量如`A=123`,
28 0
|
2月前
|
Shell
[shell]在curl测试的data参数中引用变量
[shell]在curl测试的data参数中引用变量
126 1
|
3月前
|
分布式计算 大数据 Shell
MaxCompute产品使用合集之odps shell如何将ech变量的结果集合写入文件,并且指定服务器的位置
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
39 10
|
5月前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
73 2
|
3月前
|
Shell Linux
Linux环境变量之shell中export定义全局变量和echo 变量的区别
Linux环境变量之shell中export定义全局变量和echo 变量的区别
|
4月前
|
存储 Shell 开发者
Shell 变量详解:如何定义、使用和管理
**Shell脚本中,变量是核心元素,用于暂存数据。变量默认为字符串,赋值时等号两侧无空格。命名遵循:数字、字母、下划线,以非数字开头。常用特殊变量如 `$0` (脚本名),`$#` (参数个数)。定义变量可使用单引号(不解析变量)、双引号(解析变量)或不加引号(注意空格)。使用花括号明确变量边界,`readonly` 则可设定只读变量,`unset` 删除变量。实践这些概念以加深理解。**
175 0
|
4月前
|
Shell Linux
linux shell 脚本中变量截取
linux shell 脚本中变量截取
90 0
|
11月前
|
存储 Shell Linux
【Shell 编程】变量 | 特殊变量与标准变量 | 基本语句介绍
【Shell 编程】变量 | 特殊变量与标准变量 | 基本语句介绍
57 0