07通过set寻找父子shell的变量加载

环境变量

:能够找出你的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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值