shell脚本4种执行方式

 更新时间:2019年05月10日 09:39:41   作者:咸鱼的鱼  
Linux中shell脚本的执行通常有4种方式,分别为工作目录执行,绝对路径执行,sh执行,shell环境执行。这篇文章主要介绍了shell脚本4种执行方式 ,需要的朋友可以参考下

Linux中shell脚本的执行通常有4种方式,分别为工作目录执行,绝对路径执行,sh执行,shell环境执行。

首先,看下我们的脚本内容

[tan@tan scripts]$ ll
total 4
-rw-rw-r--. 1 tan tan 68 May 8 23:18 test.sh
[tan@tan scripts]$ cat test.sh 
#!/usr/bin/bash

/usr/bin/python <<-EOF
print "Hello Shell"
    EOF

1、工作目录执行

工作目录执行,指的是执行脚本时,先进入到脚本所在的目录(此时,称为工作目录),然后使用 ./脚本方式执行

[tan@tan scripts]$ ./test.sh
-bash: ./test.sh: Permission denied
[tan@tan scripts]$ chmod 764 test.sh
[tan@tan scripts]$ ./test.sh
Hello Shell

如图,报了权限错误,上一篇博文有提到,这里需要赋权,使用chmod 764 test.sh 赋权后就可以正常执行了

./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录 (/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。

2、绝对路径执行

绝对路径中执行,指的是直接从根目录/到脚本目录的绝对路径

[tan@tan scripts]$ pwd
/home/tan/scripts
[tan@tan scripts]$ `pwd`/test.sh 
Hello Shell
[tan@tan scripts]$ /home/tan/scripts/test.sh 
Hello Shell

这里 `pwd` 指的是该命令执行结果,等同于 /home/tan/scripts

3、sh执行

sh执行,指的是用脚本对应的sh或bash来接着脚本执行

[tan@tan scripts]$ sh test.sh 
Hello Shell
[tan@tan scripts]$ bash test.sh 
Hello Shell

注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三 是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用 指定bash路径自然也好理解了啊,呵呵……。

4、shell环境执行

shell环境执行,指的是在当前的shell环境中执行,可以使用 . 接脚本 或 source 接脚本

[tan@tan scripts]$ . test.sh 
Hello Shell
[tan@tan scripts]$ source test.sh 
Hello Shell

总结

以上所述是小编给大家介绍的shell脚本4种执行方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • 高级开发运维测试必须掌握的envsubst命令使用详解

    高级开发运维测试必须掌握的envsubst命令使用详解

    这篇文章主要为大家介绍了高级开发运维测试必须掌握的envsubst命令使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 使用curl递归下载软件脚本分享

    使用curl递归下载软件脚本分享

    本脚本完成了对apache的镜像网站的递归扫描。通过文件IO的缓存方式记录可下载文件,再针对需要文件的后缀名批量下载软件包备用,大家可以修改成自己脚本
    2014-03-03
  • Linux下有名管道mkfifo使用详解

    Linux下有名管道mkfifo使用详解

    有名管道用于非亲缘关系进程之间的通讯,创建有名管道使用到的库函数是mkfifo(),这里强调是库函数的原因是,mkfifo同时也是一个用户指令,这篇文章主要介绍了Linux下有名管道mkfifo使用,需要的朋友可以参考下
    2023-07-07
  • 浅析Linux中重定向问题

    浅析Linux中重定向问题

    这篇文章主要介绍了浅析Linux中重定向问题,需要的朋友可以参考下
    2017-08-08
  • 通过shell脚本对mysql的增删改查及my.cnf的配置

    通过shell脚本对mysql的增删改查及my.cnf的配置

    这篇文章主要介绍了通过shell脚本对mysql的增删改查及my.cnf的配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • 详解Shell $*和$@之间的区别

    详解Shell $*和$@之间的区别

    这篇文章主要介绍了详解Shell $*和$@之间的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 详解linux中的文件权限识别及修改

    详解linux中的文件权限识别及修改

    在 Linux 系统中,一切皆文件,这篇文章主要来和大家介绍一下linux中的文件权限识别以及修改,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-08-08
  • shell参数换行与shell输出换行的方法实例

    shell参数换行与shell输出换行的方法实例

    这篇文章主要给大家介绍了关于shell参数换行与shell输出换行的方法实例,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • shell随机定时修改密码change_passwd.sh

    shell随机定时修改密码change_passwd.sh

    这篇文章主要介绍了shell随机定时修改密码change_passwd.sh,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Linux 中 RPM包 安装 查询 卸载命令小结及yum命令详解

    Linux 中 RPM包 安装 查询 卸载命令小结及yum命令详解

    RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装。RPM 有五种操作模式,分别为:安装、卸载、升级、查询和验证
    2015-11-11

最新评论