环境变量
:能够找出你的Linux服务器上的各种变量
:一般指的是用export内置命令导出的变量,用于定义shell的运行环境,保证shell命令的正确执行
:shell通过环境变量确定登录的用户名,PATH路径,文件系统等各种应用
:环境变量可以在命令中临时创建,但是用户退出shell终端,变量即丢失,如果要永久生效,需要修改环境变量配置文件
用户个人配置文件 ~/.bash_profile,~/.bashrc远程登录用户特有文件
全局配置文件/etc/profile,/etc/bashrc,且系统建议最好创建在/etc/profile.d/,而非直接修改主文件,修改全局配置文件,影响所有登录系统的用户
#简单创建一个用户ts 密码为kali
┌──(root㉿kali)-[~]
└─# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.dotnet/tools
┌──(root㉿kali)-[~]
└─# which ls
ls: aliased to ls --color=auto
┌──(root㉿kali)-[~]
└─#
┌──(root㉿kali)-[~]
└─#
┌──(root㉿kali)-[~]
└─# su - ts
su: user ts does not exist or the user entry does not contain all the required fields
┌──(root㉿kali)-[~]
└─# useradd ts
┌──(root㉿kali)-[~]
└─# passwd ts
New password:
Retype new password:
passwd: password updated successfully
┌──(root㉿kali)-[~]
└─# su - ts
su: warning: cannot change directory to /home/ts: No such file or directory
$ pwd
/root
$ echo $PWD
/root #变量已写入系统权值中了
每个用户都有自己的环境配置文件,~/.bash_profile ~/.bashrc,且以个人配置文件,优先加载变量,读取,以个人的优先生效
当你需要给所有用户使用某个变量,写入全局即可/etc/profile_
检查系统环境变量的命令
set 输出所有变量,包括全局变量,局部变量
env 只显示全局变量
declare 输出所有的变量,如同set
export 显示和设置环境变量的值
[roo@localhost ~]$ set
ABRT_DEBUG_LOG=/dev/null
BASH=/usr/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.2.46(2)-release'
COLORTERM=truecolor
...#使用set命令对变量进行查看
[roo@localhost ~]$ set | wc -l
2479
#对这些命令进行统计
函数属于局部变量
使用export命令找到PATH变量的值
[root@localhost ssh]# export |grep PATH
declare -x PATH="/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
撤销环境变量
unset变量名 删除变量或函数
[root@localhost ssh]# name="yes"
[root@localhost ssh]# echo $name
yes
[root@localhost ssh]# unset name
[root@localhost ssh]# echo $name
#unset过后值没了
[root@localhost ssh]#
设置只读变量
readonly,只有shell结束,只读变量失效
[root@localhost ssh]# readonly pppl=1989 #设置一个只读变量
[root@localhost ssh]# readonly pppl="1989"
-bash: pppl: 只读变量
[root@localhost ssh]# echo $pppl
1989
[root@localhost ssh]# pppl="13" #试图对其进行更改
-bash: pppl: 只读变量 #更改失败
[root@localhost ssh]#
系统保留环境变量关键字
bash内嵌了诸多环境变量,用于定义bash的工作环境
export |awk -F '[ :=]' '{print $3}'
bash多行命令执行
ls /data/;cd/tmp/;cd /home;cd /data