Shell脚本的三种执行方式

Shell脚本的执行方式可以有以下几种:

方式一: 

./script.sh     # 利用小数点来执行

方式二: 

sh script.sh 或 bash script.sh      #  利用bash(sh)来执行脚本

前面两种方式其实都是一样的:都是在当前父进程下的子进程中执行,子进程完成后,子进程中的各项变量或操作将会结束而不会传回到父进程中.举例来说:

可以看到,执行后再看脚本中两个变量,在父进程中不起作用!

备注: 如果在script2.sh文件里面执行script1.sh的脚本,那么就是执行.  ./script1.sh   [中间有空格]

方式三: 

 source script.sh  或 . liqiang.sh#  利用小数点来执行

而通过第三种方式执行(source test.sh)的话,在父进程中就起作用了:

这就是直接执行与用source命令执行的区别,前者只作用于子进程本身,后者则作用于整个父进程。

因此:如要想不注销系统,并让全局配置文件生效,则必须用source命令:

比如说: 在全局配置文件中/etc/profile添加了JAVA_HOME,要让他对整个环境生效

export JAVA_HOME=/usr/java/jdk1.7.0_75

就必须执行source /etc/profile

注意:在执行时要赋权限

chmod a+x liqiang.sh #赋权限chmod a+x script-name

补充知识点:

一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为:

#!/bin/bash

#!/bin/sh

注意:

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

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

原文地址:https://www.cnblogs.com/insane-Mr-Li/p/9094925.html

时间: 2024-10-23 18:34:50

Shell脚本的三种执行方式的相关文章

shell脚本的三种执行方法

1.bash 脚本或者sh 脚本 2../脚本 3.. 脚本或者source 脚本 说明.或者source是内建命令 第一种方法是脚本没有执行权限的时候使用 第二种方法是当前路径下执行脚本但必须有可以行权限 第三种方法在当前进程运行即父进程下运行,而前两种方法在父进程下创建子进程运行脚本 举个小例子表示区别: 因为前两种执行脚本方法是在当前父进程下创建子进程执行shel脚本,定义的内容不会返回到父进程,而第三种方法是在父进程下直接执行脚本,可以返回定义的内容. vim /etc/init.d/c

Shell三种执行方式(简单参数说明)

Shell三种执行方式   (非原创,忘记了是谁的博客叻) 1: . 文件名 1.source命令用法:   source FileName    作用:在当前bash环境下读取并执行FileName中的命令.该filename文件可以无"执行权限"     注:该命令通常用命令"."来替代.     如:source bash_profile   . bash_profile两者等效.     source(或点)命令通常用于重新执行刚修改的初始化文档.    

Shell 脚本中调用另一个 Shell 脚本的三种方式

主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 Shell. exec 在同一个 Shell 内执行,但是父脚本中 exec 行之后的内容就不会再执行了 source 在同一个 Shell 中执行,在被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用,相当于合并两个脚本在执行.   第一种:fork 特点:会生成子PID而且可重

Shell简介:什么是Shell,Shell命令的两种执行方式

Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支.它虽然不是Unix/Linux系统内核的一部分,它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,shell是最重要的实用程序

【转】shell 教程——01 Shell简介:什么是Shell,Shell命令的两种执行方式

Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,shell是最重要的实用

hive命令的三种执行方式

hive命令的3种调用方式 方式1:hive –f  /root/shell/hive-script.sql(适合多语句) hive-script.sql类似于script一样,直接写查询命令就行 不进入交互模式,执行一个hive script 这里可以和静音模式-S联合使用,通过第三方程序调用,第三方程序通过hive的标准输出获取结果集. $HIVE_HOME/bin/hive -S -f /home/my/hive-script.sql (不会显示mapreduct的操作过程) 那么问题来了

shell脚本基础-四种启动方式

1.当前路径启动 ./test.sh 2.绝对路径启动 pwd /data/beijing 'pwd'/test.sh 3.指定解释器执行 sh test.sh bash test.sh 4.shell环境执行 . test.sh source test.sh 原文地址:https://www.cnblogs.com/freeht/p/12132890.html

shell调用另一个脚本的三种方式fork/exec/source

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两类:外部命令和内部命令.外部命令是通过系统调用或独立的程序实现的,如sed.awk等等.内部命令是由特殊的文件格式(.def)所实现,如cd.history.exec等等. 在说明exe和source的区别之前,先说明一下fork的概念. fork是linux的系统调用,用来创建子进程(child

Linux中执行shell脚本的4种方法

这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下. bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/root/bin目录中并已有执行权限(添加权限的方法:chmod +x hello.sh). 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: ./ 的意思是说在当前的工作目录下执行hello.sh.如果不加上