linux unset path,linux中set、unset、export、env、declare,readonly的区别及用法

set命令显示当前shell的变量,包括当前用户的变量;

env命令显示当前用户的变量;

export命令显示当前导出成用户变量的shell变量。

每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,

但shell自己的变量不同shell是不同的,比如BASH_ARGC,BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export“导出”变成一个用户变量。

0.declare命令

declare命令用于声明和显示已存在的shell变量。当不提供变量名参数时显示所有shell变量。declare命令若不带任何参数选项,则会显示所有shell变量及其值。declare的功能与typeset命令的功能是相同的。

语法:

declare(选项)(参数)

选项:

+/-:”-“可用来指定变量的属性,”+”则是取消变量所设的属性;

-f:仅显示函数;

r:将变量设置为只读;

x:指定的变量会成为环境变量,可供shell以外的程序来使用;

i:[设置值]可以是数值,字符串或运算式。

参数:

shell变量:声明shell变量,格式为“变量名=值”。

主要作用就是声明shell变量:declarevar=value,与之等价的功能是var=value,另外还有一个与之等价的功能typesetvar=value

例如:三种声明shell变量的方式

[root@VM_0_12_centos~]#var1=var1value

[root@VM_0_12_centos~]#declarevar2=var2value

[root@VM_0_12_centos~]#typesetvar3=var3value

[root@VM_0_12_centos~]#echo$var1

var1value

[root@VM_0_12_centos~]#echo$var2

var2value

[root@VM_0_12_centos~]#echo$var3

var3value

declare-x将shell变量输出到环境变量

[root@VM_0_12_centos~]#declare-xvar1=value1

[root@VM_0_12_centos~]#env|grepvar1

var1=value1

1.unset命令

unset命令用于删除已定义的shell变量(包括环境变量)和shell函数。unset命令不能够删除具有只读属性的shell变量和环境变量。

语法:

unset(选项)(参数)

选项:

-f:仅删除函数;

-v:仅删除变量。

参数:

shell变量或函数:指定要删除的shell变量或shell函数。

例如:删除上面的var1,var2,var3,其中var1已经输出为环境变量,var2和var3为普通shell变量。

[root@VM_0_12_centos~]#echo$var1

value1

[root@VM_0_12_centos~]#echo$var2

var2value

[root@VM_0_12_centos~]#echo$var3

var3value

[root@VM_0_12_centos~]#env|grepvar1#证明var1为环境变量

var1=value1

[root@VM_0_12_centos~]#env|grepvar2

[root@VM_0_12_centos~]#env|grepvar3

[root@VM_0_12_centos~]#unsetvar1

[root@VM_0_12_centos~]#unsetvar2

[root@VM_0_12_centos~]#unsetvar3

[root@VM_0_12_centos~]#env|grepvar2

[root@VM_0_12_centos~]#env|grepvar1

[root@VM_0_12_centos~]#echo$var3

添加一个环境变量并设置为只读删除不了环境变量

[root@VM_0_12_centos~]#declare-xvar6=value6#声明一个变量并输出到环境变量

[root@VM_0_12_centos~]#env|grepvar6

var6=value6

[root@VM_0_12_centos~]#readonlyvar6#设置为只读

[root@VM_0_12_centos~]#unsetvar6

-bash:unset:var6:cannotunset:readonlyvariable

2.Set命令

set命令作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号”+”和”-“的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义即可。

语法:

set(选项)(参数)

选项:

-a:标示已修改的变量,以供输出至环境变量。

-b:使被中止的后台程序立刻回报执行状态。

-C:转向所产生的文件无法覆盖已存在的文件。

-d:Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。

-e:若指令传回值不等于0,则立即退出shell。

-f:取消使用通配符。

-h:自动记录函数的所在位置。

-HShell:可利用”!”加的方式来执行history中记录的指令。

-k:指令所给的参数都会被视为此指令的环境变量。

-l:记录for循环的变量名称。

-m:使用监视模式。

-n:只读取指令,而不实际执行。

-p:启动优先顺序模式。

-P:启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。

-t:执行完随后的指令,即退出shell。

-u:当执行时使用到未定义过的变量,则显示错误信息。

-v:显示shell所读取的输入值。

-x:执行指令后,会先显示该指令及所下的参数。

参数;

取消某个set曾启动的参数。

实例:设置两个环境变量并设置为环境变量

[root@VM_0_12_centos~]#unsetvar1#删除shell变量

[root@VM_0_12_centos~]#unsetvar2

[root@VM_0_12_centos~]#unsetvar3

[root@VM_0_12_centos~]#var1=value1#定义shell变量的三种方式

[root@VM_0_12_centos~]#declarevar2=value2

[root@VM_0_12_centos~]#typesetvar3=value3

[root@VM_0_12_centos~]#set-avar2#将三个变量输出为环境变量

[root@VM_0_12_centos~]#set-avar3

[root@VM_0_12_centos~]#set-avar1

[root@VM_0_12_centos~]#env|grepvar#查看环境变量

var1=value1

var3=value3

var2=value2

3.env命令

env命令用于显示系统中已存在的环境变量,以及在定义的环境中执行指令。该命令只使用”-“作为参数选项时,隐藏了选项”-i”的功能。若没有设置任何选项和参数时,则直接显示当前的环境变量。

如果使用env命令在新环境中执行指令时,会因为没有定义环境变量”PATH”而提示错误信息”suchfileordirectory”。此时,用户可以重新定义一个新的”PATH”或者使用绝对路径。

语法:

env(选项)(参数)

选项;

-i:开始一个新的空的环境;

-u:从当前环境中删除指定的变量。

参数:

变量定义:定义在新的环境中变量,定义多个变量定义用空格隔开。格式为“变量名=值”;

指定:指定要执行的指令和参数。

例如:

查看环境变量

[root@VM_0_12_centos~]#env|grepvar

var1=value1

var3=value3

var2=value2

MAIL=/var/spool/mail/root

4.export命令

export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。

一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。

语法:

export(选项)(参数)

选项:

-f:代表[变量名称]中为函数名称;

-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中;

-p:列出所有的shell赋予程序的环境变量。

参数:

变量:指定要输出或者删除的环境变量。

例如:

[root@VM_0_12_centos~]#exportvar1=value1#定义一个环境变量

[root@VM_0_12_centos~]#env|grepvar

var1=value1

MAIL=/var/spool/mail/root

[root@VM_0_12_centos~]#exportvar1=value11111#修改上面的环境变量

[root@VM_0_12_centos~]#env|grepvar

var1=value11111

MAIL=/var/spool/mail/root

[root@VM_0_12_centos~]#export-nvar1#删除上面的环境变量,只是从环境变量中删除,shell变量仍然存在

[root@VM_0_12_centos~]#env|grepvar

MAIL=/var/spool/mail/root

[root@VM_0_12_centos~]#

6.readonly命令

readonly命令用于定义只读shell变量和shell函数。readonly命令的选项-p可以输出显示系统中所有定义的只读变量。

语法:

readonly(选项)(参数)

选项:

-f:定义只读函数;

-a:定义只读数组变量;

-p:显示系统中全部只读变量列表。

参数:

变量定义:定义变量,格式为“变量名=‘变量值’”。

例如:查看系统的只读变量:

[root@VM_0_12_centos~]#readonly-p

declare-rBASHOPTS=”checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath”

declare-irBASHPID

declare-rBASH_COMPLETION_COMPAT_DIR=”/etc/bash_completion.d”

declare-arBASH_VERSINFO='([0]=”4″[1]=”2″[2]=”46″[3]=”2″[4]=”release”[5]=”x86_64-redhat-linux-gnu”)’

declare-irEU

declare-irPP

declare-rSHELLOPTS=”braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor”

declare-irU

总结:

1.declarevar=value可以声明一个shell变量(与之等价的是var=value,typesetvar=value),也可以直接用declare-xvar=value声明一个变量并直接输出到环境变量,也可以加上-r参数表示只读变量。

2.unsetvar可以删除变量,包括shell变量和环境变量(当前用户变量),不能够删除具有只读属性的shell变量和环境变量。

3.set-avar可以将var变量输出到环境变量

4.env可以查看所有的环境变量,可以加管道命令与grep命令过滤变量

5.exportvar=value用于定义一个环境变量,修改环境变量也是这个,等价于declare-xvar=name

export-nvar用于从环境变量删除此变量,但是shell变量中此变量仍然存在。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值