Linux的Bash Shell详解

一、Bash Shell概述

  1.什么是bash           bash是Bourne Again Shell的简称,是从unix系统中的sh发展而来的,是用户和Linux内核交互的工具,用户通过bash操作内核完成系统的使用和管理。

  2.shell的种类           /bin/sh(已经被/bin/bash替代)           /bin/bash(默认的shell)           /bin/ksh(源自贝尔实验室,兼容bash)           /bin/tcsh(整合C shell,功能更为强大)           /bin/csh(已经被tcsh取代)           /bin/zsh(源自ksh功能更为强大)           每种shell的功能比较类似,但是语法会稍有不同。

  3.bash的历史和发展

二、Bash Shell的变量概述

  1.变量是代表一些值的符号。

  2.可以通过变量来设置shell或者其他程序。

  3.变量存在于内存中。

  4.Linux有自定义变量(local)和环境变量(environment)。

  5.自定义变量和环境变量的作用范围不同。

  6.可以使用以下指令查看所有变量

    set可以查看所有的变量

    env只能查看环境变量

三、Bash Shell的设置方式

  1.通过自定义变量设置

    variable=value来设置

    $variable来取得变量的值 

    变量名不能以数字或者特殊字符开头

    如果想在值中有空格存在,则需要用双引号或者单引号来定义值,如:key="key is one"

    单引号和双引号的区别在于,双引号支持拿已存在变量作为值的一部分,如:key="key is $key2"

    unset key命令可以删除变量

    常见的变量                 HISTFILESIZE:记录历史指令保存的最大值                 HISTSIZE:记录使用history命令查看历史指定输出的个数最大值                 COLUMNS:终端窗口显示的宽度                 LINES:终端窗口显示的高度                 PS1:设置提示符号前面的内容样式(\d,\h,\t,\u,\w,\!,\$,\l,\#等)

  2.通过别名(Aliases)设置

    alias lss='ls -la'设置别名方式

    使用alias查看系统中所有的alias

    使用alias aliasName查看指定别名定义

    type -a alias名称来查看别名具体定义描述

    unalias删除别名定义

  3.通过set指令设置

    set 查看系统所有变量值

    设置shell内部的属性值(set -o noclobber, set -o vi)

  4.通过环境变量设置

    自定义变量只能在当前的shell环境中有效。

    环境变量会在整个主机下的shell环境中生效。

    使用export variable name来设置环境变量。

    常用变量介绍                  HOME:指向当前用户的家目录。                  LANG:应用程序使用何种语言来显示界面。                  PWD:指向用户当前的工作目录路径。                  PATH:                       系统预设的环境变量。                       执行一些没有指定路径的指令时去该路径中找。                       PATH=$PATH.:将隐藏路径设置到PATH中,会带来安全性问题。                       可以使用which指令来找到某个指令所在的位置。

四、Shell startup scripts的概述

  1.Shell startup scripts是用户登录或其他非登录动作时会自动执行一些shell脚本

  2.建立自定义变量或者执行set指令设置shell

  3.建立环境变量,设置其他程序

  4.使用alias,简化后续操作

  5.登录登出的时候执行哪些程序

五、login和non-login shell的详解

  1.login shell:             通过完整的登录流程时运行的shell。             首先会读取/etc/profile(PATH/USER/HOSTNAME/HISTSIZE等)。             读取/etc/profile.d/*.sh(颜色、语言、指令别名等)。             ~/.bash_profile、~/.bash_login、~/.profile(只依次读取其中一个)。             ~/.bash_rc、/etc/bashrc。             source指令可以加载脚本的变更,如:source /etc/profile。

  2.non-login shell:             不需要登录流程就可以执行的shell,如su和原bash下的新bash动作             ~/.bash_rc、/etc/bashrc             读取/etc/profile.d/*.sh             ~/.bash_logout:                 在注销用户时会进行该脚本                 可以执行备份、缓存和临时文件清理等任务

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏mySoul

cookie

除了名(name)和值(value),cokie持续有效时间很短,只能持续在web浏览器的会话期间。一旦用户关闭浏览器,用户保存的数据就全部丢失。cookie需...

1972
来自专栏飞雪无情的博客

Go语言实战笔记(三)| Go Doc 文档

对于协作开发或者代码共享来说,文档是一个可以帮助开发者快速了解以及使用这些代码的一个教程,文档越全面,越详细,入门越快,效率也会更高。

1553
来自专栏mySoul

node Express 框架

Express事实上Node内置的http模块上构建的一层抽象。理论上所有Express实现的功能都能用Node实现

1782
来自专栏酷玩时刻

微信公众号开发之如何使用JSSDK

使用JSSDK主要包括 1、判断当前客户端版本是否支持指定JS接口、 2、分享接口(微信认证) 3、图像接口 4、音频接口 5、智能接口(识别语音并返...

4843
来自专栏nummy

使用jsTree树形控件【2】配置

上一节入门篇中的例子使用了jsTree控件的默认配置,其实我们也可以自定义配置。例如,下面的代码修改控件的主题:

1403
来自专栏醉生梦死

vim部分常用的命令(更新时间:2018/11/07)

1565
来自专栏我和PYTHON有个约会

Django来敲门~第一部分【9.使用Django内置视图处理对象简化开发】

首先,要说这是Django基础部分的最后一个章节了。后面会详细讲解Django每一部分的使用方式和API了

1193
来自专栏运维小白

5.5 进入编辑模式

编辑模式:就是进入到可以编辑文本文件的模式 ? 进入编辑模式方法: i ,直接在当前光标处进入编辑模式 I (大写I),光标直接移动到该行的行首,并进入编辑...

2007
来自专栏软件测试经验与教训

回放loadrunner脚本时log区中文显示乱码,怎么破?

40512
来自专栏jiajia_deng

处理 Qt 中文提示 “常量中有换行符”

在 Qt 自建的 Widget 窗口生成的 cpp 文件中,直接写中文编译时会提示错误。内容是 “常量中有换行符”。如下图所示:

9114

扫码关注云+社区

领取腾讯云代金券