【Linux】系统变量 和 自定义变量

文章目录

  • 一、系统变量
    • 1、` env `
    • 2、` set `
  • 二、自定义变量
    • 1、变量名规则:
    • 2、变量值
    • 3、连接多个变量
    • 4、全局变量
    • 5、unset取消变量
  • 三、自定义命令行前缀 `PS1`

一、系统变量

1、env

显示系统环境变量,直接输入env即可。

2、set

env的基础上增加显示了用户自定义的变量,直接输入set即可。

二、自定义变量

1、变量名规则:

变量名只能包含字母、数字、下划线,且首位不能是数字。

a=1
a=abc
a=a37

2、变量值

  • 变量值有特殊符号时需要用单引号括起来
  • 如果用双引号,会识别其中的特殊字符;单引号会把其中的特殊字符当作普通字符来处理。
  • 调用变量时,使用$加上变量名即可。
没有特殊字符时,单引号和双引号效果相同:
[app@centos tmp]$ a='a b c'
[app@centos tmp]$ echo $a
a b c
[app@centos tmp]$ a="b c"
[app@centos tmp]$ echo $a
b c

有特殊字符时,单引号和双引号效果不同:
[app@centos tmp]$ echo $a
a
[app@centos tmp]$ a='a$bc'
[app@centos tmp]$ echo $a
a$bc

3、连接多个变量

也称为变量的累加。

  • 调用时直接连接多个变量即可,依次计算出变量的值后,连接在一起。

  • 多个变量连接时,最好把每个变量都用双引号括起来。

示例:

定义变量a、b:
[app@centos tmp]$ a=1
[app@centos tmp]$ b=2

两个变量直接相连:
[app@centos tmp]$ echo $a$b
12

变量值中包含特殊字符时也可以直接相连:
[app@centos tmp]$ a='a$b' 修改了变量a的值
[app@centos tmp]$ echo $a$b
a$b2

[app@centos tmp]$ c="c$b"  
[app@centos tmp]$ echo $a$c 其中$c值为c2
a$bc2

当$后跟有多个字母时,均视为一个变量名,所以需要分开写:
[app@centos tmp]$ c=c"$bc"
[app@centos tmp]$ echo $c
c

把"$bc"分开成"$b"c,不然不能识别$b
[app@centos tmp]$ c=c"$b"c
[app@centos tmp]$ echo $c
c2c

4、全局变量

export 变量名=变量值

export b=123
把变量b设置为全局变量,且值为123

5、unset取消变量

unset 变量名

注意:不加$

[app@V]$ b=123
[app@V]$ echo $b
123
[app@V]$ unset b
[app@V]$ echo $b

三、自定义命令行前缀 PS1

默认情况下,linux中命令行前缀显示的是黑色的,内容是:

非root用户:[用户名@主机名 路径名]$

root用户:[用户名@主机名 路径名]#

其实这是由环境变量 PS1 控制的。

查看PS1变量的值:
[app@xxx]$ echo $PS1
[\u@\h \W]\$

默认情况下PS1='[\u@\h \W]\$'

其中`\W`代表相对路径,`\w`代表绝对路径
   
修改PS1自定义命令前缀的颜色:
PS1='[\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\W\[\033[00m\]]\$ '

【Linux】系统变量 和 自定义变量_第1张图片

当然,这样直接修改,只在当前会话中生效,若要所有会话生效,设置成全局变量即可。

你可能感兴趣的:(linux)