Linux下shell script的执行方式汇编
来源:互联网 发布:西王母国 知乎 编辑:程序博客网 时间:2024/06/16 21:54
假设存在shell scripts文件为/home/myscripts/helloworld.sh,现列举如下的执行方式:
一、直接命令执行
1)绝对路径——/home/myscripts/helloworld.sh
2)相对路径——假设当前工作目录为/home/myscripts,则执行方式为./helloworld.sh
3)利用变量PATH— —将helloworld.sh脚本文件放在PATH变量中任一个目录,然后直接以helloworld.sh来执行
Remarks:
问题:在第2)条中,为什么不是直接用helloworld.sh来执行呢?因为相对于其当前工作目录/home/myscripts,./hellowold.sh和helloworld.sh都是相对路径了。假设当前工作目录为/home,那么可以通过./myscripts/helloworld.sh和myscripts/helloworld.sh来执行都可以的。这和问题上面的有什么不同呢?
解答: 如果想直接用helloworld.sh来执行成功的话,其实就要采取第3)种方式了。
二、以bash进程来执行
假设当前工作目录为/home/myscripts,则直接通过bash helloworld.sh或者sh helloworld.sh来执行
Remarks:可以使用sh helloworld.sh来执行,是因为/bin/sh就是/bin/bash的连接文件
三、以source或小数点(.)来执行
假设当前工作目录为/home/myscripts,则通过source helloworld.sh或. helloworld.sh来执行,二者是一样的哦
四、各种执行shell scripts方式的区别
a )第三种执行方式和第一、二种执行方式的区别
利用第三种方式来执行shell scripts,就会在父进程中去执行shell scripts中的命令。而第一、二两种方式,会使用一个新的bash环境来执行脚本内的命令,就是在子进程中执行脚本命令了。所以如果脚本文件中有有关变量的设置的时候,第一、二种方式下,等脚本文件执行完毕,回到父进程bash中时,在脚本文件中设置的变量已经查不到了。而第三种方式下,因为脚本文件就是在父进程bash中执行的,所以等脚本文件执行完毕,仍然可以查到在脚本文件中设置的变量。
b)第一种执行和第二种执行方式一样吗
从原理上说,二者是一样的,因为在shell scripts文件的第一行有#!/bin/bash语句,就是说要用bash来执行,相当于shell *.sh
五、Linux中命令的查找的过程
当我们在命令提示符下输入一个命令时,Linux的查找该命令的流程如下:
(1)已相对命令或决定命令去查找(像/home/jianzai/script/my_script.sh,或./my_script.sh,但是如果直接是my_script.sh的话,那就不经过第1步了,从第2步开始找了 )
(2)有alias找到命令,然后执行
(3)shell内置的命令执行
(4)在PATH环境变量设置的目录中去查找
六、备注
第一种方式需要赋予文件可执行权限,第二种方式则不要,只要有shell(或python命令)的执行权限就行了。注意python、perl脚本的执行的方式都是类似的哦。
- Linux下shell script的执行方式汇编
- Linux下shell与子shell及执行Script的几种方式
- Shell script执行方式
- shell script的执行方式比较
- shell script 的执行
- shell script执行方式差异(source, sh script, ./script)
- Linux 下 SHELL的几种执行方式
- Linux下shell脚本的4中执行方式
- Linux下Shell脚本的基本执行方式
- 【Unix/Linux.Shell Script】Shell Script的执行及特殊字符
- 学习shell --script的执行方式区别(source 、 shscript 、./script)
- echo -e 在shell script 方式下运行的问题
- jQuery执行Script的方式
- script的执行方式区别
- Linux -- Shell 执行方式
- linux系统下的shell script 入门指南
- Linux的Shell Script学习
- Linux Shell Script的基础知识
- 算法口诀
- exit与atexit
- wamp 403 禁止访问
- 如何解决word启动提示向程序发送命令出现问题
- ios下得到汉字拼音的方法比较
- Linux下shell script的执行方式汇编
- Spring3.0 入门进阶(1):从配置文件装载Bean
- IOS项目中增加自定义字体
- iOS开发流程总结
- Hadoop小文件带来的问题以及解决方案
- C# 中的 ConfigurationManager类引用方法
- Server模型及其PHP实现
- 类成员函数作为线程函数
- 重写数组迭代新方法every,filter,map,some,forEach