一、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:
                在注销用户时会进行该脚本
                可以执行备份、缓存和临时文件清理等任务

    

    

Linux的Bash Shell详解的更多相关文章

  1. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

  2. Linux I/O 重定向详解及应用实例

    Linux I/O 重定向详解及应用实例 简解 > 输出 < 输入 >> 追加 & [> | < | >>]之前:输入输出; ls /dev & ...

  3. Linux 用户及权限详解

    Linux 用户及权限详解 用户 , 组 ,权限 安全上下文(secure context): 权限: r,w,x 文件: r : 可读,可以使用类似cat 等命令查看文件内容. w : 可写,可以编 ...

  4. 【转帖】Linux定时任务Crontab命令详解

    Linux定时任务Crontab命令详解 https://www.cnblogs.com/intval/p/5763929.html 知道有crontab 以及 at 命令 改天仔细学习一下 讲sys ...

  5. Linux定时任务Crontab命令详解_转

    转自:Linux定时任务Crontab命令详解 (部分修改) linux 定时系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服 ...

  6. Linux 用户和用户组详解

    用户分类 超级用户:UID范围 0 root用户:uid=0(root) gid=0(root) groups=0(root) 普通用户:由管理员创建,UID范围(500-65535) --> ...

  7. 【转】linux中inittab文件详解

    原文网址:http://www.2cto.com/os/201108/98426.html linux中inittab文件详解 init的进程号是1(ps -aux | less),从这一点就能看出, ...

  8. Linux开机启动程序详解

    Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...

  9. Linux开机启动程序详解[转]

    Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤 ...

随机推荐

  1. jquery页面隐藏和展开之间切换

    html页面: <p id="myp4">默认情况下,这段话是隐藏的,点击按钮以后,这段话就展开,并且按钮上的值改变</p> <button id=& ...

  2. 11-border(边框)

    边框 border:边框的意思,描述盒子的边框 边框有三个要素: 粗细 线性样式 颜色 border: solid 如果颜色不写,默认是黑色.如果粗细不写,不显示边框.如果只写线性样式,默认的有上下左 ...

  3. 1.7.6方法stop()与java.lang.threadDeath异常

    调用stop方法时会抛出java.lang.ThreadDeath异常,但一般情况下这个异常不需要显示的捕捉 package com.cky.thread; /** * Created by edis ...

  4. php实现网站四则运算。

    1.设计思路: 在index.php中建立两个表单,有两个提交,一个跳转到fourArithmeticOperation.php,这里保存用户输入的参数到config.txt中,留给main函数调出. ...

  5. (BestCoder Round #64 (div.2))Array

    BestCoder Round #64 (div.2) Array 问题描述 Vicky是个热爱数学的魔法师,拥有复制创造的能力. 一开始他拥有一个数列{1}.每过一天,他将他当天的数列复制一遍,放在 ...

  6. Codeforces Round #540 (Div. 3)--1118F1 - Tree Cutting (Easy Version)

    https://codeforces.com/contest/1118/problem/F1 #include<bits/stdc++.h> using namespace std; in ...

  7. Spring下配置几种常用连接池

    1.连接池概述 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是 ...

  8. 实验6 LCD接口

    1.利用单片机控制LCD1602,在LCD1602上显示字符串,并使其整屏左移. #include<reg51.h> #define uchar unsigned char #define ...

  9. 在windows10上创建ASP.NET mvc5+Memcached服务

    感谢两位两位大佬: https://blog.csdn.net/l1028386804/article/details/61417166 https://www.cnblogs.com/running ...

  10. Android--------------BroadcastReceiver的学习

    一.广播的注册方式 发送广播: Intent mIntent = new Intent("com.simware.BroadcastReceiverDemo"); mIntent. ...