笑谈区别之--执行Shell脚本的四种方法
2018-01-29 00:00
337 查看
执行shell脚本方式:
法一、绝对路径方式:[root@Dasoncheng ~]# cat 2.sh #!/bin/bash pstree
[root@Dasoncheng ~]# /root/2.sh ├─sshd───sshd───bash───2.sh───pstree ##需要具有-x执行权限,因为这样执行 没有指定命令解释器、则会使用脚本里面指定的命令解释器(如#!/bin/bash)去执行该脚本. ##如果脚本里面也没有指定,则会调用系统默认的shell解释器(echo $SHELL)查看; ##通过pstree可以看到,是单独启动了2.sh这个子shell来执行脚本里面的命令的;
法二、相对路径方式:
[root@Dasoncheng ~]# ./2.sh ├─sshd───sshd───bash───2.sh───pstree ##同法一,就是路径方式不同;
法三、bash命令调用:
[root@Dasoncheng ~]# sh 2.sh ├─sshd───sshd───bash───sh───pstree ##这里就是指定了命令解释器bash,即单独启动了sh这个子shell来执行命令;
[root@Dasoncheng ~]# which sh /usr/bin/sh [root@Dasoncheng ~]# ll /usr/bin/sh lrwxrwxrwx 1 root root 4 Feb 24 2017 /usr/bin/sh -> bash [root@Dasoncheng ~]# ll /usr/bin/bas base64 basename bash bashbug bashbug-64 [root@Dasoncheng ~]# ll /usr/bin/bash -rwxr-xr-x 1 root root 960472 Dec 7 2016 /usr/bin/bash
法四、". 2.sh"点空格相对路径 或者"./root/2.sh"点空格绝对路径方式:
[root@Dasoncheng ~]# . 2.sh ├─sshd───sshd───bash───pstree ##这个及下面的绝对路径,都是直接在当前shell环境下面 执行了shell脚本;(没有创建子shell) ##其实". "点空格 就是调用了系统里面的一个函数,这里不讲;
[root@Dasoncheng ~]# . /root/2.sh ├─sshd───sshd───bash───pstree
说下几种方式的区别:
第一种和第二种没有什么区别,两种方式都需要提前赋予脚本以执行权限。第三种是把脚本当做bash的调用来处理,所以,脚本不需要有执行权限就可以执行。
前三种方式都是在当前shell中打开一个子shell来执行脚本内容,当脚本内容结束,则子shell关闭,回到父shell中。
第四种是使脚本内容在当前shell里执行,而不是单独开子shell执行。
开子shell与不开子shell的区别就在于,环境变量的继承关系,如在子shell中设置的当前变量,不做特殊通道处理的话,父shell是不可见的。
而在当前shell中执行的话,则所有设置的环境变量都是直接生效可用的。
相关文章推荐
- 执行Shell脚本的4种方法及区别介绍
- shell编程===执行shell脚本的四种方法
- 执行shell脚本的多种方法及重要区别---摘取自“老男孩linux运维培训”(自己通过视频整理)
- 执行shell脚本的几种方法及区别
- 执行Shell脚本的4种方法及区别介绍
- 这篇文章主要介绍了Linux中执行shell脚本的4种方法总结
- Shell脚本用.和./执行的区别
- shell脚本直接执行没有问题,crontab定时执行失败的解决方法
- python在linux中执行shell脚本的方法
- 在Linux中用source,dot(.)和直接用脚本文件名执行shell脚本的区别
- shell脚本直接执行没有问题,crontab定时执行失败的解决方法
- PHP执行shell脚本运行程序不产生core文件的方法
- shell脚本执行命令 . 和sh 和 source 和 ./ 的使用以及区别
- shell脚本手动执行成功,定时任务调用失败的解决方法。
- Shell脚本避免重复执行的方法
- 执行shell脚本的几种方法
- Linux中执行shell脚本的4种方法总结
- linux下shell脚本执行方法及exec和source命令
- shell脚本执行方法
- shell脚本的几种不同执行方式的区别实验