专栏首页Java后端技术Linux的Bash Shell详解

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 条评论
登录 后参与评论

相关文章

  • 使用Spring Task轻松完成定时任务

      最近项目中需要使用到定时任务进行库存占用释放的需求,就总结了如何使用Spring Task进行简单配置完成该需求,本文介绍Spring3.0以后自定义开发的...

    阿豪聊干货
  • 你误解了Windows的文件后缀名吗?

      有很多的小伙伴对windows下的文件后缀名不能很好地理解作用和区别,更不用说高深的使用了,在这里给大家说一下这些文件后缀名到底有什么区别,有什么作用呢?

    阿豪聊干货
  • Spring+SpringMvc+Mybatis框架集成搭建教程五(项目源码发布到GitHub)

      我们做完了上面的四步操作以后,来把我们写好的项目提交到自己的GitHub仓库进行版本管理,具体步骤如下。

    阿豪聊干货
  • Tars-cpp源码走读——网络模块初始化和网络连接处理

    本文主要介绍Tars源码中,服务端如何开启网络接口监听,如何接收请求,转发请求(给业务处理模块), 其中涉及了Tars网络线程模型和IO复用模型。本文是我个人的...

    windealli
  • Vue 应用单元测试的策略与实践 03 - Vue 组件单元测试

    2.1 在 Vue 应用的单元测试中,对不同 UI 组件的单元测试有何不同?颗粒度该细到什么样的程度?

    JimmyLv_吕靖
  • vue v-link

    <div id="app"> <nav class="navbar navbar-inverse"> <div class="container"> <d...

    用户5760343
  • 【HTB系列】靶机Querier的渗透测试

    总结与反思: 1.收集信息要全面 2.用snmp-check检查snmp目标是否开启服务 3.smbmap尝试匿名用户anonymous来枚举目标的共享资源,可...

    徐焱
  • 首富带你畅谈:蓝绿部署、滚动发布、灰度发布/金丝雀发布

    根据2018年的DevOps发展报告来看,目前的DevOps发展速度非常之快,已经逐渐成为企业运维的标准方案.DevOps的核心就是敏捷和高效,敏捷和Scrum...

    张琳兮
  • 关于Windows XP SP3 的 F

    根据 Microsoft 的消息,将在 2008 年第二季度发布的“Windows XP Service Pack 3”将是 Windows XP 的最后一个服...

    py3study
  • 《挑战30天C++入门极限》新手入门:C/C++中的结构体

    landv

扫码关注云+社区

领取腾讯云代金券