Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门

简介: Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门

@[toc]

如果想看更详细的Shell总结请到我之前写的博客https://blog.csdn.net/Redamancy06/article/details/126048299

1.Shell 概述

Shell是一个命令行解释器,他接受应用程序/用户命令,然后调用操作系统内核
在这里插入图片描述
Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强

1.1Linux 提供的 Shell 解析器有

[root@hadoop100 ~]# cat /etc/shells

加粗样式
ubuntu使用的解析器是dash

1.2bash 和 sh 的关系

  • [root@hadoop100 ~]# ls -l /bin/ | grep bash

在这里插入图片描述

1.3Centos 默认的解析器是 bash

[root@hadoop100 ~]# echo $SHELL
在这里插入图片描述

2.Shell 脚本入门

2.1脚本格式

脚本以#!/bin/bash 开头(指定解析器)

2.2第一个 Shell 脚本:helloworld.sh

一般情况下加上.sh后缀,也可以不加.sh后缀

2.2.1需求

创建一个 Shell 脚本,输出 helloworld

2.2.2实践

先创建一个目录scripts(可以不创建,我这里为了好管理,又重新创建了一个目录),然后进入该目录,在目录里创建一个hello.sh的文件,进行编辑
[root@hadoop100 ~]# mkdir scripts
[root@hadoop100 ~]# cd scripts/
[root@hadoop100 scripts]# touch hello.sh
[root@hadoop100 scripts]# vim hello.sh
在这里插入图片描述
在hello.sh中写如下代码

!/bin/bash

echo "hello,world"
在这里插入图片描述

2.3脚本的常用执行方式

2.3.1第一种:采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)

2.3.1.1sh+脚本的相对路径

[root@hadoop100 scripts]# sh ./hello.sh
在这里插入图片描述

2.3.1.2sh+脚本的绝对路径

[root@hadoop100 scripts]# sh /root/scripts/hello.sh

在这里插入图片描述

2.3.1.3bash+脚本的相对路径

[root@hadoop100 scripts]# bash ./hello.sh
在这里插入图片描述

2.3.1.4bash+脚本的绝对路径

[root@hadoop100 scripts]# bash /root/scripts/hello.sh

在这里插入图片描述

2.3.2第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)

2.3.2.1首先要赋予 helloworld.sh 脚本的+x 权限

[root@hadoop100 scripts]# chmod +x hello.sh

在这里插入图片描述

2.3.2.2执行脚本

2.3.2.2.1相对路径

[root@hadoop100 scripts]# ./hello.sh

在这里插入图片描述
[root@hadoop100 scripts]# hello.sh
在这里插入图片描述
如果直接这样敲的话就会被认为是一条命令去执行

2.3.2.2.1绝对路径

[root@hadoop100 scripts]# /root/scripts/hello.sh

在这里插入图片描述

2.3.3注意

第一种执行方法,本质是 bash 解析器帮你执行脚本,所以脚本本身不需要执行 权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。

2.3.4第三种:在脚本的路径前加上“.”或者 source(了解)

2.3.4.1 source命令绝对路径

在这里插入图片描述

2.3.4.2source命令相对路径

在这里插入图片描述

2.3.4.3 “.”命令绝对路径

在这里插入图片描述

2.3.4.4 “.”命令相对路径

在这里插入图片描述

2.3.4.5注意在这里插入图片描述

这两个的区别在于第一个“.”是命令,而下面那个表示的是相对路径,因为“.”第三种情况是使脚本内容在当前 shell 里执行,所以不用加/来表示相对路径,而第一种和第二种是打开一个子 shell 来执行脚本内容,所以需要加./来表示相对路径

2.3.7子shell

在这里插入图片描述
相当于嵌套for循环,子shell的变量在父shell里面不能用,如果退出的话是先从最内层退出,然后再到最外层,相当于在在for循环里面写break,是一层一层的退出

2.3.6一般使用第二种方式执行脚本语言

2.3.6.1如果把要执行的脚本放到系统命令里(bin目录或者sbin目录)

在这里插入图片描述
但是这种情况不靠谱,因为这个目录里面是系统的命令,因此不要轻易更改

在这里插入图片描述

2.3.6.2更改环境变量

可以通过更改环境变量来直接执行脚本,可以将hello.sh放到/root/bin里面,或者直接将scripts目录放到环境变量里也可以
在这里插入图片描述

2.3.7总结

原因: 前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则 子 shell 关闭,回到父 shell 中。
第三种,也就是使用在脚本路径前加“.”或者 source 的方式,可以使脚本内容在当前 shell 里执行,而无需打开子 shell!这也是为什么我们每次要修改完/etc/profile 文件以后,需 要 source 一下的原因。
开子 shell 与不开子 shell 的区别就在于,环境变量的继承关系,如在子 shell 中设置的 当前变量,父 shell 是不可见的。

比如 更改linux中的.profile配置文件,发现没有及时生效,然后直接source 改过的文件,所有更改的环境配置文件都生效了

如果想看更详细的Shell总结请到我之前写的博客http://t.csdn.cn/cQArA

相关文章
|
1天前
|
Shell
蓝易云 - 简单shell脚本的编写教程
以上就是编写一个基本Shell脚本的步骤。当然,Shell脚本可以做的远不止这些,你可以使用变量,控制结构(如if语句和循环),以及各种Shell命令和功能来编写更复杂的脚本。
11 1
|
2天前
|
域名解析 网络协议 Linux
Linux系统下DNS配置指南
Linux系统下DNS配置指南
15 1
|
1天前
|
Linux 数据处理
探索Linux下的readlink命令:解析符号链接的利器
`readlink`命令在Linux中用于揭示符号链接的指向,显示它们所链接的实际文件或目录的路径。它可以显示简洁的绝对路径(-f),处理循环链接(-e),或不加换行符输出(-n)。例如,查看`link.txt`指向:`readlink link.txt`;获取绝对路径:`readlink -f link.txt`。使用时要注意链接是否存在、权限问题和可能的循环链接。
|
2天前
|
Shell 调度
Shell脚本中的if条件判断语句
Shell脚本中的if条件判断语句
|
2天前
|
存储 安全 Linux
深入解析Linux的`read`命令
`read`命令在Linux shell中用于从标准输入读取数据并赋值给变量。它可以用于交互式脚本,提供用户输入或读文件。关键选项包括`-p`(提示用户)、`-r`(禁用转义)、`-s`(静默模式,适合密码)、`-t`(超时)和`-n`(读取特定字符数)。示例包括基本输入、带提示的密码输入和设置超时的输入。注意安全处理密码和验证用户输入。
|
2天前
|
存储 Linux 数据处理
Linux中的raw命令:深入解析与实用指南
Linux的`raw`命令详解:用于直接访问硬件设备,绕过文件系统,提供高灵活性和性能。适用于数据处理,如直接复制文件或设备数据。使用时需谨慎,注意设备理解、数据备份及正确选项选择。结合其他工具可实现更多功能。示例:`raw file1 file2`复制文件,`raw -s 1024 file1 file2`跳过字节复制。
|
2天前
|
算法 安全 Linux
Linux命令pwmake的深入解析
`pwmake`是一个假设的Linux命令,用于生成随机密码,基于随机数算法,特点是高度随机、可配置且快速。常用参数如`-l`设定长度,`-c`指定字符类型。例如,`pwmake -l 10 -c alnum`生成字母数字组合的密码。使用时注意命令正确性、选择合适参数、保护密码安全,定期更换并结合其他安全措施。
|
2天前
|
存储 Unix Linux
深入解析Linux命令:pwd
`pwd`命令在Linux中显示当前工作目录。它默认显示逻辑路径,含符号链接,但用`-P`参数可显示物理路径。在脚本中,`pwd`能确定脚本执行目录,常用于路径操作。注意事项包括:脚本中直接调用`pwd`获取目录,理解符号链接处理,以及考虑命令的跨平台兼容性。了解这些能提升系统管理和脚本编写效率。
|
2天前
|
安全 Linux 应用服务中间件
简简单单之Linux命令入门
简简单单之Linux命令入门
|
Shell Linux C语言
sh/bash/csh/Tcsh/ksh/pdksh等shell本质区别
sh/bash/csh/Tcsh/ksh/pdksh等shell本质区别 1. Shell脚本的书写 在写Shell脚本时,往往第一行要注明用什么解释器来解释这个脚本。 如#!/bin/bash即用/bin/bash这个解释器来解释接下来的语句。 还有如#!/bin/csh Shell脚本的一般后缀是.sh 2. Shell的类型(以下列出相对流行的sh
2723 0