前言

这里简介一下什么是shell。 写linux和shell 系列是为了后面的docker 系列的整理,本来想直接整理k8s的,但是呢,想想docker 系列整理完了的话,那么整理k8s系列就没有那么多的文章需要引用,直接引用自己的随笔即可。

正文

shell 是命令解释器,用于介绍用户对操作系统的操作。

介绍shell 之前,来看一下linux的启动过程。

启动过程:

BIOS-MBR(识别硬盘是否可引导)-BootLoader(grub,选择内核和内核版本)-kernel-systemd-系统初始化 shell

也就是说这个shell只要是我们内核启动了,那么shell 实际上就是可以使用的。

首先shell 有很多种。

一般来说我们使用的是bash。

Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。

现在我们知道了shell了,那么什么是shell脚本呢?

  1. unix 的哲学: 一条命令只做一件事情

  2. 为了组合命令和多次执行,使用脚本文件来保存需要执行的命令

  3. 赋予该文件执行权限(chmod u+rx filename)

shell 脚本其实就是保存shell 命令的脚本。

那么还有一个问题,前面提及到shell 有很多种。

一般默认是bash,但是有些系统中默认不是bash,可能是sh,那么怎么办呢?

这个时候shell 命令脚本前面会加一个声明式:

#! /bin/bash

那么指定了声明方式后,那么执行方式也有很多种,大体分为四种。

  1. bash ./filename.sh

  2. ./filename.sh

  3. source ./filename.sh

  4. .filename.sh

第一种呢,就直接是bash命令执行了,这个时候不管上面声明了什么,声明部分当做注释,直接是bash执行。

同样这种情况下,我们指定如果没有执行权限的话,那么shell脚本不会运行,但是在bash命令下,脚本不需要可执行权限。还有一个区别就是bash运行脚本命令是在另外一个子进程中执行的。

第二种呢,会直接查看声明来执行,声明了什么就什么来执行,同样是另外一个子进程执行的。

第三种和第四种其实是一样的,声明了什么就什么来执行,是在当前进程执行的。

同样的,我们前面提及的内建命令和外部命令的时候,内建命令不需要创建子进程,也就是说内建命令对当前的shell生效。

现在理解shell脚本了,下面正式进入shell环节。

重新点亮shell————什么是shell[一]的更多相关文章

  1. 修改shell 将当前shell(默认是bash B SHELL )改为csh C SHELL

     在修改当前shell时,用命令: usermod -s  /bin/csh   home     home 为 你所想要改变的用户地址     此处home 为家目录,一般自己创建的用户都会在家目录 ...

  2. login shell 和 non-login shell 的区别

    介绍之前先思考一个问题:有时我们通过su命令切换用户后,却发现并没有进入该用户的shell环境.这是为什么? login shell:取得bash时需要完整的登录流程.就是说通过输入账号和密码登录系统 ...

  3. Shell学习笔记 - Shell变量

    一.变量的命名 变量名必须以字母或下划线开头,由字母.数字.或下划线组成,变量名的长度不能超过255个字符. 二.变量的分类 1. 用户自定义变量 2. 环境变量 3. 位置参数变量 4. 预定义变量 ...

  4. 交互式shell和非交互式shell、登录shell和非登录shell的区别

    交互式shell和非交互式shell.登录shell和非登录shell的区别.首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录. 交互式shell和非交互式shell(intera ...

  5. Linux shell编程02 shell程序的执行 及文件权限

    第一个shell脚本 1.       shell编程的方式 交互式shell编程 非交互式shell编程:执行的语句存放到一个文件 shell脚本:可以任意文件名,建议扩展名为sh 2.       ...

  6. Linux中环境变量到底写在哪个文件中?解析login shell 和 no-login shell

    login shell:取得bash 时需要完整的登入流程,就称为login shell.举例来说,同tty1~tty6登入时, 需要输入用户名和密码,此时取得的bash就称为login shell ...

  7. login shell与non-login shell的区别

    Bash应该是我们每天日常工作接触最多的东西了,就像我们最忠实的朋友,我们有必要了解一下这位朋友的“习性”. Bash有几种不同的运行模式,login shell与non-login shell,in ...

  8. shell编程之SHELL基础(1)

    shell脚本基础 shell是一个命令行解释器,她为互用提供了一个想linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至编写一些程序. shell还是一个功 ...

  9. 什么是shell? bash和shell有什么关系?

    什么是shell? bash和shell有什么关系? 博客分类: Linux   什么是Shell?      shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序 ...

  10. login shell 和 non-login shell 的区别

              login shell:去的bash时需要完整的登录流程.就是说通过输入账号和密码登录系统,此时取得的shell称为login shell non-login shell:取得sb ...

随机推荐

  1. 【规范】看看人家Git提交描述,那叫一个规矩

    前言 缘由 没想到玩了多年git,竟然还有提交描述规范 事情起因: 在工作迭代过程中,偶然发现同组小帅哥Git提交描述总是和自己的不大一样,秉承好奇至上的我特意去研究了下.竟然发现提交了这么多年的Gi ...

  2. golang开发_goroutine在项目中的使用姿势

    很多初级的Gopher在学习了goroutine之后,在项目中其实使用率不高,尤其一些跨语言过来的人,对并发编程理解不深入,可能很多人只知道go func(),或者掌控不够,谨慎一些,尽量少使用或者不 ...

  3. WPF之XAML语法

    目录 树形结构 对象属性赋值语法 使用标签的Attribute 使用属性元素 扩展:标记扩展(Markup Extensions) 扩展:使用TypeConverter 类映射Atribute与Pro ...

  4. Django使用Bootstrap的经典方法

    前面的话 Bootstrap是简单.灵活的用于搭建WEB页面的HTML.CSS.Javascript的工具集.Bootstrap基于HTML5和CSS3,具有漂亮的设计.友好的学习曲线.卓越的兼容性, ...

  5. 三种方式使用纯 CSS 实现星级评分

    本文介绍三种使用纯 CSS 实现星级评分的方式.每种都值得细品一番~ 五角星取自 Element Plus 的 svg 资源 <svg xmlns="http://www.w3.org ...

  6. c基础-指针、函数与预处理器

    指针.函数.预处理器 目录 指针.函数.预处理器 1.指针 解引用 指针运算 数组和指针 const char *, char const *, char * const,char const * c ...

  7. 人人都是艺术家!AI工具Doodly让潦草手绘变精美画作

    AI绘画界太卷了,一天一个新东西,不久前刚给大家介绍了可以一秒出图的SDXL-Turbo,今天来聊一聊另一位重磅选手Doodly 有用过Stable Diffuison的小伙伴都知道,想要生成一张高质 ...

  8. awk第一天

    awk第一天 1.用awk 打印整个test.txt (以下操作都是用awk工具实现,针对test.txt) awk '{print}' test.txt [root@master ~]# awk ' ...

  9. Python伪数据生成器Mimesis 使用

    一.**Mimesis的介绍** Mimesis是一个用于Python的high-performance伪数据生成器,它用各种语言为各种目的提供数据.这些假数据可以用来填充测试数据库,创建假API端点 ...

  10. WebView开源库终极方案

    目录介绍 01.前沿说明 1.1 案例展示效果 1.2 该库功能和优势 1.3 相关类介绍说明 1.4 WebView知识点 02.如何使用 2.1 如何引入 2.2 最简单使用 2.3 常用api ...