bash shell和变量

Posted 浇、水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash shell和变量相关的知识,希望对你有一定的参考价值。


1.什么是shell

shell又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统。他的作用类似于windows操作系统的命令行。在Linux中,shell既是用户交互的界面,也是控制系统的脚本语言。
bash shell功能:
history(内存当中的,而不是磁盘当中的)
-c:清空历史命令(内存中的)
-w:将缓存中的历史记录写入磁盘当中
~/.bash_history 存在磁盘当中的命令记录
echo > ~/.bash_history 清空


1.1bash shell 快捷键:


1.2bash shell 通配符

文件通配符:
*——匹配0或多个字符
?——匹配任意单个字符
[0-9]——匹配数字
[abc]——匹配该列表内任意字符
[^abc]——匹配处列表字符以外的字符
不要用[A-Z][a-z]匹配大小写 识别不出来

其他常用通配符:
[:alpha:]:匹配字母(忽略大小写)
[:lower:]:匹配小写字母
[:upper:]:匹配大写字母
[:digit:]:匹配数字
[:space:]:匹配空格
[:alnum:]:匹配任意字母或数字
[:punct:]:除空格和字母、数字以外的任何可打印字符

正则表达式(处理字符串的命令)
bash shell 通配符(用来匹配文件)


1.3bash shell 功能-命令拓展符

~:指向一个用户的家目录
$:$(command):调用命令执行的结果

  • 例:echo “the sys name is $(hostname)”
    ``:同$

:依次匹配括号内的字符串

  • 例: touch /tmp/file1,2,3,4,5或 touch /tmp/file1…5

2.认识变量

变量需要加载到内存当中才会生效

2.1变量

变量名:大写、字母+数字,必须字母或下划线开头,A1 _B1
赋值:变量名=值 注意:=两边不能加空格
调用变量:$变量名 或 $变量名



2.2两大变量

本地变量:仅在当前shell中生效
环境变量:仅在当前shell和子shell中生效
set:在当前shell中生效的所有变量,包含环境变量和本地变量
evc:在当前shell中生效的所有环境变量
unset:取消变量,unset+变量名,包括本地变量和环境变量

2.3常见系统变量

PS1:提示符变量



PATH变量:

PATH是环境变量,可通过env查看
PATH只能找到当前目录,不会往下寻找子目录

3.变量的配置文件

根目录下建立一个文件夹data

将/data加入到PATH变量当中

添加一个hello.sh文件

让他输出“hello word”

改权限执行

直接就能执行

/data下新建一个bin目录

把hello.sh复制到bin目录下起名为hello1.sh并修改权限
可以看到bin目录下的命令是执行不了的

所以PATH变量对子目录中的命令无效

登录shell和非登录shell

登录shell:
/etc/profile
~/.bash_profile
/etc/bashrc
~/.bashrc
非登录shell:
/etc/bashrc
~/.bashrc

登录shell:
图形界面或字符界面登录时
su - 切换用户
四个文件都可以读到

非登录shell:
su 用户 (没有-) 非登录shell
在图形界面打开一个终端(ctrl+shift+t)
执行bash时
执行脚本时
其他情况……
只能读到非登录shell文件

区别:读取环境不一样

3.1/etc/profile

定义系统环境变量的文件
vim打开/etc/profile

由于PATH是环境变量,文件下添加一行PATH=$PATH:/data/bin保证每次打开终端都能直接运行自己的命令
然后需要将文件加载到内存,PATH才真正改变

此时打开新终端依旧没有,仍要手动source,每个shell开启时不会读文件,重启系统

/etc/profile 定义全局环境变量,且对所有用户都生效 source时会读到,切换用户时会读到,重启时会读到

3.2 ~/.bash_profile

定义用户环境变量,针对某个用户,会覆盖/etc/profile

3.3 /etc/bashrc

3.4 ~/.bashrc

以上是关于bash shell和变量的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程Shell中Bash变量-环境变量

Shell编程Shell中Bash变量-环境变量

bash shell和变量

bash shell和变量

Shell学习之Bash变量详解

[Linux Shell学习系列五]Shell编程基础-Bash的内部变量,位置参数和特殊参数