shell 脚本执行命令 source 与 bash 的区别

Shell 脚本执行命令 source 与 bash 的区别

执行命令:

  • bash ./filename.sh

  • ./filename.sh (使用SHA BANG 脚本文件#!开头格式)

    以上命令是开启一个新子进程去执行sh脚本

  • source ./filename.sh

  • .filename.sh

    以上命令是在当前进程来进行运行

举个栗子:

  1. 创建新的shell脚本:

    # 使用vim命令添加shell脚本
    vim test.sh
    
    # 编写shell脚本
    #! /bin/bash
    
    cd /etc/nginx/
    ls -l
    du -sh *
    ~
    
    # 查看脚本当前的路径:
    [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# pwd
    /home/lvhuiqi
    
  2. 使用新创建子进程命令执行sh脚本

    # 执行命令
    [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# ./test.sh
    total 72
    drwxr-xr-x 2 root root  146 Dec 27 02:05 conf.d
    drwxr-xr-x 2 root root    6 Oct  8  2019 default.d
    -rw-r--r-- 1 root root 1077 Oct  8  2019 fastcgi.conf
    -rw-r--r-- 1 root root 1077 Oct  8  2019 fastcgi.conf.default
    -rw-r--r-- 1 root root 1007 Oct  8  2019 fastcgi_params
    -rw-r--r-- 1 root root 1007 Oct  8  2019 fastcgi_params.default
    -rw-r--r-- 1 root root 2837 Oct  8  2019 koi-utf
    -rw-r--r-- 1 root root 2223 Oct  8  2019 koi-win
    -rw-r--r-- 1 root root 5170 Oct  8  2019 mime.types
    -rw-r--r-- 1 root root 5170 Oct  8  2019 mime.types.default
    -rw-r--r-- 1 root root 2469 Sep 21 22:36 nginx.conf
    -rw-r--r-- 1 root root 2625 Aug 11 16:50 nginx.conf.bak1
    -rw-r--r-- 1 root root 2656 Oct  8  2019 nginx.conf.default
    -rw-r--r-- 1 root root  636 Oct  8  2019 scgi_params
    -rw-r--r-- 1 root root  636 Oct  8  2019 scgi_params.default
    -rw-r--r-- 1 root root  664 Oct  8  2019 uwsgi_params
    -rw-r--r-- 1 root root  664 Oct  8  2019 uwsgi_params.default
    -rw-r--r-- 1 root root 3610 Oct  8  2019 win-utf
    
    # 以上是命令运行的结果
    20K	conf.d
    0	default.d
    4.0K	fastcgi.conf
    4.0K	fastcgi.conf.default
    4.0K	fastcgi_params
    4.0K	fastcgi_params.default
    4.0K	koi-utf
    4.0K	koi-win
    8.0K	mime.types
    8.0K	mime.types.default
    4.0K	nginx.conf
    4.0K	nginx.conf.bak1
    4.0K	nginx.conf.default
    4.0K	scgi_params
    4.0K	scgi_params.default
    4.0K	uwsgi_params
    4.0K	uwsgi_params.default
    4.0K	win-utf
    
    # 查看当前所在目录
    [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# pwd
    /home/lvhuiqi
    

    此命令是新创建了一个子进程去执行shell脚本的命令,执行完原路径保持不变

  3. 使用source当前进程去执行shell脚本:

    # 执行命令
    [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# source ./test.sh
    total 72
    drwxr-xr-x 2 root root  146 Dec 27 02:05 conf.d
    drwxr-xr-x 2 root root    6 Oct  8  2019 default.d
    -rw-r--r-- 1 root root 1077 Oct  8  2019 fastcgi.conf
    -rw-r--r-- 1 root root 1077 Oct  8  2019 fastcgi.conf.default
    -rw-r--r-- 1 root root 1007 Oct  8  2019 fastcgi_params
    -rw-r--r-- 1 root root 1007 Oct  8  2019 fastcgi_params.default
    -rw-r--r-- 1 root root 2837 Oct  8  2019 koi-utf
    -rw-r--r-- 1 root root 2223 Oct  8  2019 koi-win
    -rw-r--r-- 1 root root 5170 Oct  8  2019 mime.types
    -rw-r--r-- 1 root root 5170 Oct  8  2019 mime.types.default
    -rw-r--r-- 1 root root 2469 Sep 21 22:36 nginx.conf
    -rw-r--r-- 1 root root 2625 Aug 11 16:50 nginx.conf.bak1
    -rw-r--r-- 1 root root 2656 Oct  8  2019 nginx.conf.default
    -rw-r--r-- 1 root root  636 Oct  8  2019 scgi_params
    -rw-r--r-- 1 root root  636 Oct  8  2019 scgi_params.default
    -rw-r--r-- 1 root root  664 Oct  8  2019 uwsgi_params
    -rw-r--r-- 1 root root  664 Oct  8  2019 uwsgi_params.default
    -rw-r--r-- 1 root root 3610 Oct  8  2019 win-utf
    
    # 以下是脚本的输出
    20K	conf.d
    0	default.d
    4.0K	fastcgi.conf
    4.0K	fastcgi.conf.default
    4.0K	fastcgi_params
    4.0K	fastcgi_params.default
    4.0K	koi-utf
    4.0K	koi-win
    8.0K	mime.types
    8.0K	mime.types.default
    4.0K	nginx.conf
    4.0K	nginx.conf.bak1
    4.0K	nginx.conf.default
    4.0K	scgi_params
    4.0K	scgi_params.default
    4.0K	uwsgi_params
    4.0K	uwsgi_params.default
    4.0K	win-utf
    
    # 查看当前所在的路径
    [root@iZbp1e44zna0rzyna76eszZ nginx]# pwd
    /etc/nginx
    

    路径发生了改变,并不是/home/lvhuiqi/,而是在test.sh脚本里的cd 的命令,source 命令是当前进程所执行的命令

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值