赞
踩
变量可分为两类:环境变量(全局变量,用到的是比较少的)和局部变量。
环境变量也可称为全局变量,是系统预先定义好的,可以在创建它们的 shell 及其派生出来的任意子进程 shell 中使用。
比如:
- [root@node1 ~]# echo $USER
- root
局部变量只能在创建它们的 shell 函数或脚本中使用。
还有一些变量是用户创建的,其它的则是专用 shell 变量。
环境变量用于定义 Shell 的运行环境,保证 Shell 命令的正确执行,Shell通过环境变量来确定登陆用户名、命令路径、终端类型、登陆目录等,所有的环境变量都是系统全局变量,可用于所有子进程,这包括编辑器、Shell 脚本和各类应用。
- [root@localhost ~]# echo $qq
- 123
- [root@localhost ~]# bash
- [root@localhost ~]# echo $qq
定义的变量,在用户退出之后就会失效,除非将变量写死在全局的变量当中。
环境变量可以在命令行中设置,但用户退出时这些变量值也会丢失,因此最好在用户家目录下的 .bash_profile 文件中或全局
配 置 /etc/bashrc ,/etc/profile 文件或者/etc/profile.d/中定义。将环境变量放入 profile 文件中,每次用户登录时这些变量值都将被初始化。
- [root@node1 ~]# vim /etc/profile
- export name=hhhh
- [root@node1 ~]# source /etc/profile
- [root@node1 ~]# echo $name
- hhhh
传统上,所有环境变量均为大写。环境变量应用于用户进程前,必须用export 命令导出。
环境变量可用在创建他们的shell和从该shell派生的任意子shell或进程中。他们通常被称为全局变量以区别局部变量。
通常,环境变量应该大写,环境变量是已经用 export 内置命令导出的变量。
- export JAVA_HOME=/usr/local/jdk1.8.0_351
- export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
- export GOROOT=/usr/local/go
- export PATH=$GOROOT/bin:$PATH
- export GROOVY_HOME=/usr/local/groovy-4.0.6
- export PATH=$GROOVY_HOME/bin:$PATH
- export GIT=/usr/local/git
- export PATH=$GIT/bin:$PATH
- export TF_CLI_CONFIG_FILE=$HOME/terraform/.terraformrc
- export M2_HOME=/usr/local/apache-maven-3.8.6
- export PATH=$M2_HOME/bin:$PATH
- export NODE_HOME=/usr/local/node-v14.16.1-linux-x64
- export PATH=$NODE_HOME/bin:$PATH
- export SCANNER_HOME=/usr/local/sonar-scanner-4.6.0.2311-linux
- export PATH=$SCANNER_HOME/bin:$PATH
有一些环境变量,比如 HOME、PATH、SHELL、UID、USER 等,在用户登陆之前就已经被/bin/login 程序设置好了。通常环境变量定位保持在用户家目录下的.bash_profile 文件中。具体的环境变量说明请参考下表:
环境变量启动过程:
加载环境变量的顺序,首先得加载/etc/profile
ls /etc/profile
然后这些/etc/profile.d/文件也会被加载
- [root@localhost ~]# ls /etc/profile.d/
- 256term.csh 256term.sh colorgrep.csh colorgrep.sh colorls.csh colorls.sh lang.csh lang.sh less.csh less.sh vim.csh vim.sh which2.csh which2.sh
然后是用户级别的环境变量加载
- [root@localhost ~]# ls -a
- .bash_profile
环境变量文件说明:
设置环境变量
- export NAME=zhang
- declare -x NAME=zhang
- NAME=zhang;export NAME
自定义环境变量生产环境 java 环境配置实例:tomcat,resin,csvn,hadoop
- export JAVA_HOME=/application/jdk
- export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
- export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
- export RESIN_HOME=/application/resin
常见放在:/etc/profile
通过 echo 命令打印环境变
- $HOME
- 用户登录时进入的目录
- $UID
- 当前用户的 UID(用户标识)相当于 id -u。
- $PWD
- 当前工作目录的绝对路径名
- $SHELL
- 当前 SHELL
- $USER
- 当前用户
.......省略若干
- [root@localhost ~]# echo $HOME
- /root
- [root@localhost ~]# echo $UID
- 0
- [root@localhost ~]# echo $PWD
- /root
- [root@localhost ~]# echo $SHELL
- /bin/bash
- [root@localhost ~]# echo $USER
- root
[root@localhost ~]# env XDG_SESSION_ID=3 HOSTNAME=localhost.localdomain SELINUX_ROLE_REQUESTED= TERM=vt100 SHELL=/bin/bash ........................省略若干 提示:1.用 set 显示所有本地变量 2.我们也可以自定义全局环境变量,见如下例子
- [root@localhost ~]# echo $USER
- root
- [root@localhost ~]# unset USER
- [root@localhost ~]# echo $USER
- #-->此处为输出的空行
提示:这样是临时生效,要想永久生效,写到/etc/profile 文件内即可
有些内部命令在目录是看不见的,它们有的是 Shell 本身提供的,常用的内部命令有:echo、eval、exec、export、readonly、read、shift、wait、exit和点(.)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。