Linux变量

Linux变量分类

在 Linux Shell 中,变量主要有两大类

  • 环境(系统)变量
  • 用户定义变量

每种类型的变量依据作用域不同,又分为全局变量局部变量

  • 全局变量作用在整个 Shell 会话及其子 Shell
  • 局部变量作用在定义它们的进程及其子进程内

常见内置变量

环境(系统|内置)变量
在这里插入图片描述


su切换用户时加载变量的过程


su - root 加载的变量

su - 会完全切换用户,加载用户的环境变量

添加新变量时要添加export才能全局生效
在这里插入图片描述


su 不加载之前用户的变量

su依然使用之前用户的环境变量

在这里插入图片描述


查看变量

使用 printenv 查看全局变量

# 查看全局变量
printenv

在这里插入图片描述


查看常用的的环境变量

# 查看$PATH列表
## 查看所有命令的搜索路径
echo $PATH

在这里插入图片描述

# 查看用户的主工作目录
echo $HOME

在这里插入图片描述

# 查看保存历史命令的条数
echo $HISTSIZE

# 查看当前登录用户名
echo $LOGNAME

# 查看当前用户使用的shell种类
echo $SHELL

export显示当前系统定义的所有环境变量

参考: https://www.cnblogs.com/amboyna/archive/2008/03/08/1096024.html
https://cloud.tencent.com/developer/article/1758884

# 显示当前系统定义的所有环境变量
export

# 列出当前的环境变量值
export -p 

在这里插入图片描述


env 显示当前用户的变量;

# 查看所有环境变量
env|more

在这里插入图片描述


set 显示当前shell变量,shell变量包含用户变量

使用 set 查看某个特定进程中的所有变量,包括局部变量全局变量以及用户定义变量

# 可以查看更多变量,包括预定义变量和位置变量
set|more

在这里插入图片描述


添加PATH变量


全局修改–修改/etc/profile文件:----不建议

vi /etc/profile

# 在里面加入:
export PATH=$PATH:/home/uusama/mysql/bin

# 生效/etc/profile配置
source /etc/profile

# 查看$PATH
echo $PATH

在这里插入图片描述


Linux变量配置文件

参考:https://mp.weixin.qq.com/s/WHTAezINpwQpbObf-ivyGw

全局配置文件:

  • /etc/profile
  • /etc/profile.d/
  • /etc/bashrc
  • /etc/environment-----系统级别全局环境变量文件
# /etc/environment
## 格式为 KEY=VALUE
JAVA_HOME="/usr/lib/jvm/java-11"
LANG="en_US.UTF-8"

用户配置文件:

  • ~/.bash_profile
  • ~/.bashrc

~/.bashrc~/.bash_profile ,这两个文件的区别为:

  • .bash_profile交互式login方式进入bash shell运行,.
  • .bashrc交互式no-login方式进入bash shell运行。

可以理解为.bash_profile文件只会在用户登录的时候读取一次
.bashrc每次打开终端进行每次新会话都会读取


持久化配置变量–修改~/.bashrc

vi /root/.bashrc 只对root用户生效。

# 在里面加入:
export PATH=$PATH:/home/uusama/mysql/bin

# 生效~/.bashrc配置
source ~/.bashrc

# 查看$PATH
echo $PATH
# 看看输出里面是不是已经有了/home/uusama/mysql/bin这个路径了。

在这里插入图片描述


修改变量

.bash_profile.bashrc 中添加 export 语句,永久修改变量


export常用参数

-f  代表[变量名称]中为函数名称。
-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p  列出所有的shell赋予程序的环境变量

# 列出当前的环境变量值
export -p 

提升到全局变量 export

参考: https://www.runoob.com/linux/linux-comm-export.html

# 定义变量
变量名=变量值

# 提升为全局变量
export 变量名

删除变量

unset 删除一个环境变量,如:

unset NAME;

在这里插入图片描述


将变量设为只读

readonly 设置环境变量只读,如:

# 将变量设置只读
## 只读变量unset无效
## 只读变量无法修改变量值
readonly NAME

在这里插入图片描述


删除只读变量

# 安装gdb
yum install gdb -y

# 删除只读变量
cat << EOF | gdb
> attach $$
> call unbind_variable("要删除的变量名")
> detach
> EOF

# 修改变量的值
name=zhangsan

# 打印变量的值
echo $name

# 删除变量
unset $name

在这里插入图片描述


查看别名alias列表

设置别名放在.bash_aliases文件中。

# 查看命令别名列表
alias

在这里插入图片描述


使别名不生效

如果别名冲突,需要临时使该alias不生效,命令前加\即可
https://blog.csdn.net/qq_36741436/article/details/78732201

在这里插入图片描述

# 使cp别名不生效
## -r 递归复制
## -f 覆盖文件时不提示
\cp -rf a b

Linux配置proxy

参考: Linux系统下终端proxy代理配置
在这里插入图片描述


全局proxy

Centos7/etc/environment文件不支持socks5代理配置

[root@rhel8 ~]# cat /etc/environment 
all_proxy="http://proxy-dmz.ibm.com:912"
no_proxy="ibm.com,10.166.30.64,ar09-12-wp,ar09-12-wp.cluster.local,10.166.30.85,ar09-10-wp,ar09-10-wp.cluster.local,127.0.0.1,10.166.30.64,10.166.30.85,127.0.0.1,localhost,.svc,10.233.0.0/22,10.244.0.0/16,.cluster.local"
# 这是github的token变量
github_token=gho_jxxxxx

~/.bashrc中配置

socks5h 表示远程解析 dns,如果直接写 socks5本地解析 dns

# 全局走的http_proxy
export all_proxy="http://admin:nihao123@proxy.ibm.com:443"

# 全局走的socks_proxy
export all_proxy="socks5h://admin:nihao123@proxy.ibm.com:443"

终端proxy

参考: Linux 让终端走代理的几种方法
socks5h 表示远程解析 dns,如果直接写 socks5本地解析 dns

# 全局走的代理
export all_proxy="socks5h://127.0.0.1:1080"

设置别名快速开启终端proxy和取消终端proxy,写入.bashrc文件中即可.

alias setproxy="export ALL_PROXY=socks5h://127.0.0.1:1080"
alias unsetproxy="unset ALL_PROXY"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值