运行 Shell 脚本的方法

先来看一个简单的shell脚本:

#!/bin/sh
cd /tmp
echo "hello,world!"

  我们来挨个解释一下脚本的每一行:

  第一行:#!后面跟的是解释器的路径(shell本身就是一种解释型语言),解释器的路径是/bin/sh;

  第二行:cd命令是切换当前工作目录的命令,tep是linux下根目录的一个子目录;

  第三行:echo命令是输出后面所跟的参数


1 方法一

  第一种:因为shell程序写完之后并没有执行权限,所以该脚本想要执行可以使用chmod命令赋予该脚本可执行的权限,然后再执行。

[root@localhost shell]# chmod +x echo.sh
[root@localhost shell]# ./echo,sh
bash: ./echo,sh: 没有那个文件或目录
[root@localhost shell]# ./echo.sh
hello,world!
[root@localhost shell]# pwd
/root/shell
[root@localhost shell]#

2 方法二

第二种:调用解释器使得脚本执行,例如:bash、csh、csh、ash、bsh、ksh等等;

[root@localhost shell]# sh echo.sh
hello,world!
[root@localhost shell]# bash echo.sh
hello,world!<br>[root@localhost shell]# pwd<br><em id="__mceDel">/root/shell</em>

3 方法三

第三种:使用source命令;

root@localhost shell]# source echo.sh
hello,world!
[root@localhost tmp]# pdw
bash: pdw: command not found
[root@localhost tmp]# pwd
/tmp

  细心的读者可能发现了一个问题:在脚本的第一行有cd命令,这是一个改变工作目录的命令,可是使用第一种和第二种放大执行脚本后当前的工作目录并没有改变(脚本所在的目录是shell文件夹,脚本执行后,使用pwd命令显示出当前的工作目录还是shell),使用第三种方法执行后当前的工作目录就改变了,进入了tmp中。出现这种情况是系统本身执行脚本的方式不同所造成的!

  前两种方法执行脚本时系统会创建一个子进程或者说子shell来执行脚本,原来的进程就是父进程或者说父shell,整个过程中父进程会等待子进程执行完毕,然后子进程退出,父进程也退出。cd命令确实被执行了,但是仅仅是在子进程中改变了工作目录,所以脚本执行完后使用pwd显示工作目录并没有改变。而第三种方法执行的shell脚本的话并不创建子进程,就是在原来的进程中执行,所以最后的工作目录改变了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell脚本运行另一个Shell脚本可以通过两种方式实现。第一种方式是在当前进程中运行另一个Shell脚本,可以使用source命令或点号(.)来执行。这样做会将另一个Shell脚本的内容直接插入到当前Shell脚本执行环境中,不会创建新的进程。例如,可以使用以下命令来运行另一个Shell脚本: ``` source 另一个脚本.sh . 另一个脚本.sh ``` 第二种方式是在新的进程中运行另一个Shell脚本,可以使用以下命令来执行: ``` ./另一个脚本.sh ``` 在这种情况下,需要为另一个Shell脚本添加可执行权限,并指定正确的路径。注意,这种方式会创建一个新的Shell进程来执行另一个脚本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Shell脚本【2】写和运行Shell脚本](https://blog.csdn.net/qq_43624033/article/details/106455124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [shell----shell脚本运行](https://blog.csdn.net/weixin_45606836/article/details/104377197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值