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

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"

1177

被折叠的 条评论
为什么被折叠?



