Linux中set,env和export这三个命令的区别 Linux中set,env和export这三个命令的区别
set命令显示当前shell的变量,包括当前用户的变量;
env命令显示当前用户的变量;
export命令显示当前导出成用户变量的shell变量 。
每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,
但shell自己的变量不同shell是不同的,比如BASH_ARGC,
BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量 , 因为一个shell自己的变
量可以通过export “导出”变成一个用户变量 。
Linux里面env bash命令作用是什么?env最常用的功能是查询环境变量,直接输入env即可,例如:
bash是Linux下的命令解释器,目前CentOS,ubuntu , rhce默认都使用bash作为解释器 。
linux怎么通过setenv命令修改环境变量按变量的生存周期来划分,Linux变量可分为两类,它们的修改方法如下:
(1)永久的:需要修改配置文件,变量永久生效 。
常见的配置文件包括:
(1-1)/etc/profile:对所有用户生效;此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行;并从/etc/profile.d目录的配置文件中搜集shell的设置
例如:编辑/etc/profile文件,添加CLASSPATH变量
# vi /etc/profile
添加一行:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
修改后需要执行重新登录才能生效,也可以执行命令source /etc/profile来生效
(1-2)/etc/bashrc:对所有用户生效;为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取
编辑方法如上,不再赘述
(1-3)~/.bash_profile:仅会对当前用户有效;每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次
例如:编辑guok用户目录(/home/guok)下的.bash_profile
$ vi /home/guok/.bash.profile
添加如下内容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
修改后需要执行重新登录才能生效,也可以执行命令source /etc/profile来生效
(1-4)~/.bashrc:仅会对当前用户有效;该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取
编辑方法如上,不再赘述
另外,~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系
综述,对上述文件修改,添加你需要的变量,在启动一个shell(终端,terminal)时,你所定义的变量均会生效的 。
(2)临时的:使用export命令声明即可,变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,在关闭shell后失效,再打开新shell时就没有这个变量 , 需要使用的话还需要重新定义
在shell的命令行下直接使用[export 变量名=变量值] 定义变量
环境变量的查看
(1)使用echo命令查看单个环境变量 。例如:
echo $PATH
(2)使用env查看所有环境变量 。例如:
env
(3)使用set查看所有本地定义的环境变量 。例如:
set
另外,unset可以删除指定的环境变量 。
常用的环境变量
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
推荐阅读
- 厂家直销女鞋直播间文案,女鞋直播话术
- linux命令描述题,linux基本命令的使用实验
- 服装如何做营销策划书,服装业营销策划方案
- sqlserver服务管理器没有服务器,sqlserver服务里面什么都没有
- go语言调用其它语言 go语言函数调用
- 摩友视频通话是什么的简单介绍
- asp.net邮箱验证注册用户,aspnet用户注册界面代码
- mysql语句openjson,mysql语句和命令大全
- OPPOk9cpu是什么,oppok9s处理器