重新点亮shell————什么是shell[一]
前言
这里简介一下什么是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脚本呢?
unix 的哲学: 一条命令只做一件事情
为了组合命令和多次执行,使用脚本文件来保存需要执行的命令
赋予该文件执行权限(chmod u+rx filename)
shell 脚本其实就是保存shell 命令的脚本。
那么还有一个问题,前面提及到shell 有很多种。
一般默认是bash,但是有些系统中默认不是bash,可能是sh,那么怎么办呢?
这个时候shell 命令脚本前面会加一个声明式:
#! /bin/bash
那么指定了声明方式后,那么执行方式也有很多种,大体分为四种。
bash ./filename.sh
./filename.sh
source ./filename.sh
.filename.sh
第一种呢,就直接是bash命令执行了,这个时候不管上面声明了什么,声明部分当做注释,直接是bash执行。
同样这种情况下,我们指定如果没有执行权限的话,那么shell脚本不会运行,但是在bash命令下,脚本不需要可执行权限。还有一个区别就是bash运行脚本命令是在另外一个子进程中执行的。
第二种呢,会直接查看声明来执行,声明了什么就什么来执行,同样是另外一个子进程执行的。
第三种和第四种其实是一样的,声明了什么就什么来执行,是在当前进程执行的。
同样的,我们前面提及的内建命令和外部命令的时候,内建命令不需要创建子进程,也就是说内建命令对当前的shell生效。
结
现在理解shell脚本了,下面正式进入shell环节。
重新点亮shell————什么是shell[一]的更多相关文章
- 修改shell 将当前shell(默认是bash B SHELL )改为csh C SHELL
在修改当前shell时,用命令: usermod -s /bin/csh home home 为 你所想要改变的用户地址 此处home 为家目录,一般自己创建的用户都会在家目录 ...
- login shell 和 non-login shell 的区别
介绍之前先思考一个问题:有时我们通过su命令切换用户后,却发现并没有进入该用户的shell环境.这是为什么? login shell:取得bash时需要完整的登录流程.就是说通过输入账号和密码登录系统 ...
- Shell学习笔记 - Shell变量
一.变量的命名 变量名必须以字母或下划线开头,由字母.数字.或下划线组成,变量名的长度不能超过255个字符. 二.变量的分类 1. 用户自定义变量 2. 环境变量 3. 位置参数变量 4. 预定义变量 ...
- 交互式shell和非交互式shell、登录shell和非登录shell的区别
交互式shell和非交互式shell.登录shell和非登录shell的区别.首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录. 交互式shell和非交互式shell(intera ...
- Linux shell编程02 shell程序的执行 及文件权限
第一个shell脚本 1. shell编程的方式 交互式shell编程 非交互式shell编程:执行的语句存放到一个文件 shell脚本:可以任意文件名,建议扩展名为sh 2. ...
- Linux中环境变量到底写在哪个文件中?解析login shell 和 no-login shell
login shell:取得bash 时需要完整的登入流程,就称为login shell.举例来说,同tty1~tty6登入时, 需要输入用户名和密码,此时取得的bash就称为login shell ...
- login shell与non-login shell的区别
Bash应该是我们每天日常工作接触最多的东西了,就像我们最忠实的朋友,我们有必要了解一下这位朋友的“习性”. Bash有几种不同的运行模式,login shell与non-login shell,in ...
- shell编程之SHELL基础(1)
shell脚本基础 shell是一个命令行解释器,她为互用提供了一个想linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至编写一些程序. shell还是一个功 ...
- 什么是shell? bash和shell有什么关系?
什么是shell? bash和shell有什么关系? 博客分类: Linux 什么是Shell? shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序 ...
- login shell 和 non-login shell 的区别
login shell:去的bash时需要完整的登录流程.就是说通过输入账号和密码登录系统,此时取得的shell称为login shell non-login shell:取得sb ...
随机推荐
- Java 包装类的使用(自动装箱+自动拆箱)+Vector
1 package com.bytezreo.ut; 2 3 import java.util.Scanner; 4 import java.util.Vector; 5 6 /** 7 * 8 * ...
- 开源的 Sora 复现方案,成本降低近一半!
近日,开发 ChatGPT 的 OpenAI 公司又放出王炸 Sora,一个可以根据文本生成视频的 AI 模型. 上图就是 OpenAI 公布的 Sora 生成的视频片段,可以毫不夸张地说 Sora ...
- hutool,真香!
前言 今天给大家介绍一个能够帮助大家提升开发效率的开源工具包:hutool. Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式 ...
- JVM(一)-内存结构
我们都知道,我们写的Java程序需要先经过编译,生成了.class文件(字节码文件).然而,计算机并不能直接解释.class文件里面的内容,这时候就需要一个能加载.解释.class文件并且能按.cla ...
- stm32 boot0硬件接法导致的概率性启动失败问题总结和反思
概要 问题概要,板子在稳压电源上工作很好,可一旦接了电池,stm32就会出现概率性的无法启动.加上项目比较急,这个问题阻塞一直无法量产.真是非常的要命啊. 思路分析 既然是不同的电源会导致这个问题 ...
- TLSR8258方案开发之BLE协议接口代码解析
一 前言 这里的代码是在原厂基础上修改了不少.虽然代码复杂了不少,但是逻辑也清晰了不少. 二 广播协议 想要熟悉并修改ble的广播协议和内容,请查阅结构体: static const attribu ...
- 在salesforce中如何获取Security Token
Trailhead练习Soap API使用Soap UI时,需要Security Token才能登录,在Lightning一直找不到,后来切换到Classic才找到.现在提供一个简单粗暴的方式,快速定 ...
- uniapp踩坑记录
sessionStorage.setItem('token', data.msg)uni.setStorage('token', res.data); 搞了半天登录后直接通过获取getstorage获 ...
- socket本地通信服务端
#include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> #include <str ...
- C#调用百度翻译API自动将中文转化为英文
1.百度翻译开放平台在平台申请你自己的appid,和密钥 2.开通后就在我提供的gitee链接下载代码,直接修改秘钥和appid就能使用如下图所示 3.Gitee链接:链接 4.https://git ...