Linux环境变量
$env #查看所有与终端相关的环境变量
$cat /proc/$PID/environ #查看所有进程运行时的相关变量
PID可以通过pgrep获得:
$pgrep gedit #获得进程gedit的进程号
得到的结果以null(\0)分隔,如果想一行一条:
$cat /proc/$PID/environ | tr '\0' '\n'
变量赋值:
[student@myhost ~]$ var=value
[student@myhost ~]$ var=valu e
bash: e: command not found...
[student@myhost ~]$ var="valu e"
我们知道赋值时若有空格需加双引号或单引号。
输出变量:
[student@myhost ~]$ echo $var
valu e
[student@myhost ~]$ echo ${var}
valu e
[student@myhost ~]$ echo '$var' #单引号中的内容不会被扩展
$var
[student@myhost ~]$ echo "$var"
valu e
Shell脚本中的使用:
[student@myhost ~]$ cat b
f=apple
c=5
echo I have $c ${f}s.
[student@myhost ~]$ ./b
I have 5 apples.
export命令设置环境变量。
获得字符串长度:
[student@myhost ~]$ echo "$var"
valu e
[student@myhost ~]$ echo ${#var}
6
检查当前Shell类型:
[student@myhost ~]$ echo $SHELL
/bin/bash
[student@myhost ~]$ echo $0
bash
检查是否是root用户运行的:
[root@myhost student]# cat c
if [ $UID -ne 0 ];then
echo noroot
else
echo root
fi
[root@myhost student]# ./c
root
[student@myhost ~]$ ./c
noroot
利用函数添加环境变量:
可以将以下函数加入到.bashrc中:
[student@myhost ~]$ cat .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
prepend() { [ -d "$2" ] && eval $1=\"$2':'\$$1\" && export $1; }
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
[student@myhost ~]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/student/.local/bin:/home/student/bin
[student@myhost ~]$ prepend PATH /home/student
[student@myhost ~]$ echo $PATH
/home/student:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/student/.local/bin:/home/student/bin
prepend函数的作用为将/home/student目录添加到PATH路径最前面,其中$2代表第二个参数,-d代表目录是否存在,eval将后边的参数执行,最后export使其成为环境变量。
若变量为空,则最后会产生一个冒号,可这样避免:
prepend1() { [ -d "$2" ] && eval $1=\"$2\$\{$1:+':'\$$1\}\" && export $1; }
其中$1:+意义为若$1不为空则使用+后边的值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2020-02-26 C++ Primer 学习笔记 第六章 函数
2019-02-26 JAVA字符串方法