修改PATH环境变量及export,readonly,env,unset命令的使用



变量

变量赋值与环境

 

1).export:用于修改或打印环境变量

readonly:使得变量不可修改

语法:

        export name[=word] ...

        export -p

        readonly name[=word] ...

        readonly -p

主要选项:

        -p:打印命令的名称以及所有被导出(只读)变量的名称与值,

          这种方式可使得shell重新读取输出以便重新建立环境(只读设置)

 

export临时导入环境变量

$PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接。

编辑你的 PATH 声明,其格式为:

PATH=$PATH:PATH1:PATH 2:PATH 3: ... :PATH N

其中PATHN 自己加上指定路径,中间用冒号隔开。环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句:$ source .bash_profile

完成后,可以通过 $ echo $PATH 或者 export命令查看当前的搜索路径。

这样定制的好处在于可以避免频繁的启动位于 shell 搜索的路径之外的程序

注意:该方法添加的PATH 在终端关闭后就会消失。

 

 

实例1export命令将新变量添加到环境中   

[gz_fieldyang@ test ~]$ export -p         #显示当前环境

declare -x CVS_RSH="ssh"

...

declare -x HISTSIZE="1000"

declare -xHOME="/home/gz_fieldyang"

declare -xJAVA_HOME="/usr/local/jdk"

...

declare -xPATH="/usr/local/git/bin.../home/gz_fieldyang/bin:"

...

[gz_fieldyang@ test ~]$ echo $PATH     #查看当前路径

/usr/local/git/bin.../home/gz_fieldyang/bin

[gz_fieldyang@ test ~]$ PATH=$PATH:/USER/LOCAL/BIN:/THIS/IS/A/TEST#更新PATH

[gz_fieldyang@ test ~]$ export PATH    #导出PATH

[gz_fieldyang@ test ~]$ export 

declare -x CVS_RSH="ssh"

...

declare -xHOME="/home/gz_fieldyang"

...

declare -xPATH="/usr/local/git/bin.../home/gz_fieldyang/bin:/USER/LOCAL/BIN:/THIS/IS/A/TEST"

...

 

附言:

bash的配置文件

1)、全局配置与个人配置

全局配置

        /etc/profile /rtc/profile.d/*.sh/etc/bashrc

个人配置       

        ~/.bash_profile,~/.bashrc

 

2)、各配置文件解析:

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,

该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置,

/etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,

当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

~/.bashrc:该文件包含专用于你的bashshellbash信息,当登录时以及每次打开新的shell,该文件被读取。

 

3)、profile类的文件basrc类的文件区别:

profile类的文件:

        设定环境变量

        运行命令或脚本   

basrc类的文件: 

        设定本地变量

        定义命令别名

 

4)、shell如何读取配置文件    

登录式shell如何读取配置文件

/etc/profile -->/etc/profile.d/*.sh

-->~/.bash_profile --> ~/.bashrc-->/etc/bashrc                    

非登录式shell如何配置文件

 ~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh   

 

永久生效

可以通过编辑/etc/profile来改PATH,也可以改家目录下的.bashrc(即:~/.bashrc)

 

实例2export命令将新变量添加到环境中(永久生效)     

[gz_fieldyang@ test ~]$ readonly hours_per_day=24   #定义变量并赋值

[gz_fieldyang@ test ~]$ export PATH=$PATH:/usr/local/bin #更新PATH

[gz_fieldyang@ test ~]$ export PATH 

[gz_fieldyang@ test ~]$ export -P

[gz_fieldyang@ test ~]$ echo $PATH

/usr/local/git/bin.../home/gz_fieldyang/bin:/usr/local/bin

[gz_fieldyang@ test ~]$ echo $hours_per_day                                         

24

 

[gz_fieldyang@ test ~]$ vim /etc/profile

...

exportPATH="$PATH:/usr/local/bin"

:wq

[gz_fieldyang@ test ~]$ source /etc/profile

不报错则成功。

[gz_fieldyang@ test ~]$ vi .bashrc

# .bashrc

# Source global definitions

if [ -f /etc/bashrc ]; then

       . /etc/bashrc

fi

# User specific aliases and functions

exportPATH="$PATH:/usr/local/bin"

[gz_fieldyang@ test ~]$ source .bashrc

不报错则成功。

 

变量可以添加到程序环境中,但是对shell或接下来的命令不会一直有效:

将该变量赋值,置于命令名称或参数前即可:

PATH=/bin:/usr/binawk '...' file1 file2

 

实例3          

[gz_fieldyang@ test ~]$ PATH=/bin:/usr/bin awk -F: '{print$1,$3}' /etc/passwd |tail -5

sninf_simonlau 855

sninf_tonyhung 856

gz_kinma 857

gz_fieldyang 859

sninf_kenchoi 860

[gz_fieldyang@ test ~]$ PATH=/bin:/usr/bin cat quotas

Kin_ma 102

Jones_yan 132

Field_yang 263

Will_wu282

#这个PATH值的改变仅针对单个awk命令的执行,任何接下来的命令,所看到的都是在他们环境中PATH的当前值

 

 

2env

语法:

        env [ -i] [var=value...][command_name[arguments...]]

用途:当command_nameenv执行时,可针对该command_name继承而来的环境有更细致的控制

主要选项:

        -i:忽略继承的环境,仅使用命令行上所给定的变量与值

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

 

[gz_fieldyang@ test ~]$ env

declare -x CVS_RSH="ssh"

...

declare -xHOME="/home/gz_fieldyang"

...

declare -xPATH="/usr/local/git/bin.../home/gz_fieldyang/bin:/USER/LOCAL/BIN:/THIS/IS/A/TEST"

...

[gz_fieldyang@ test ~]$ env -i PATH=$PATH:/user/local/bin

 #开始一个新的空的环境 ,当前生效

PATH=/usr/local/git/bin:...

/home/gz_fieldyang/bin:/USER/LOCAL/BIN:/THIS/IS/A/TEST:/user/local/bin

 

env也可以临时改变环境变量值:

env -iPATH=$PATH HOME=$HOME LC_ALL=C awk [-F ] '...' file1 file2

 

实例:

[gz_fieldyang@test ~]$ env -iPATH=/user/local/bin/test     

PATH=/user/local/bin/test

[gz_fieldyang@ test ~]$ env -i PATH=/bin:/usr/bin awk -F:'{print $1,$3}' /etc/passwd |tail -5

sninf_simonlau 855

sninf_tonyhung 856

gz_kinma 857

gz_fieldyang 859

sninf_kenchoi 860

[gz_fieldyang@ test ~]$ env -i PATH=$PATH awk -F: '{print$1,$3}' /etc/passwd |tail -5             

sninf_simonlau 855

sninf_tonyhung 856

gz_kinma 857

gz_fieldyang 859

sninf_kenchoi 860

[gz_fieldyang@ test ~]$

 

 

 

3).unset

语法:

        unset [-v] variable ...

        unset -f function ...

用途:从当前shell删除变量和函数

主要选项:

        -f:解除(删除)指定的函数

        -v:解除(删除)指定的变量,没有任何选项时,这是默认行为模式

 

实例1:删除指定变量

[gz_fieldyang@ test ~]$ readonly YEARSS=2016

[gz_fieldyang@ test ~]$ echo $YEARSS

2016

[gz_fieldyang@ test ~]$ unset YEARSS 

-bash: unset: YEARSS: cannot unset:readonly variable

[gz_fieldyang@ test ~]$ export TEST=thisisatest

[gz_fieldyang@ test ~]$ echo test

[gz_fieldyang@ test ~]$ echo $TEST 

thisisatest

[gz_fieldyang@ test ~]$ unset TEST

[gz_fieldyang@ test ~]$ echo $TEST 

 

[gz_fieldyang@ test ~]$ export A=11

[gz_fieldyang@ test ~]$ export B=12 C=13 #定义变量

[gz_fieldyang@ test ~]$ echo $A $B $C

11 12 13

[gz_fieldyang@ test ~]$ unset -v A B C   #删除变量

[gz_fieldyang@ test ~]$ echo $A $B $C

 

实例2:删除指定函数

[gz_fieldyang@ test ~]$ who_is_on (){          #定义函数

>  who|awk '{print$1}' | sort -u                                #产生排序后的用户列表

> }

[gz_fieldyang@ test ~]$ who_is_on              #调用函数

gz_fieldyang

gz_jonesyan

sngz

sninf_kenchoi

sninf_tonyhung

[gz_fieldyang@ test ~]$ unset -f who_is_on      #删除函数

[gz_fieldyang@ test ~]$ who_is_on       

-bash: who_is_on: command not found

[gz_fieldyang@ test ~]$

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值