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不为空则使用+后边的值。

posted @   epiphanyy  阅读(15)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2020-02-26 C++ Primer 学习笔记 第六章 函数
2019-02-26 JAVA字符串方法
点击右上角即可分享
微信分享提示