Linux下的bash,source与./的区别

本文详细介绍了在Linux环境下运行程序的三种方法,包括直接运行具有可执行权限的文件、调用命令解释器和使用source命令。同时,深入探讨了shell命令的种类及其执行过程,特别是外部命令的详细步骤,帮助读者理解Linux系统的内部机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、运行linux的三种方法 

         1 :使文件具有可执行权限,直接运行文件

         2:直接调用命令解释器执行程序

         3: 使用source执行程序

二、shell的命令和种类

          Linux shell可执行的命令有3种,内建命令、shell函数和外部命令,其中,shell执行内建命令时,没有进程的创建和消亡,而执行外部命令时,存在进程的创建和消亡。

          外部命令详细的执行过程

          1:调用POSIX系统fork函数接口,创建一个命令行shell进程的复制

          2:在子进程的运行环境中,查找外部命令在Linux文件系统的位置,如果外部命令给出了完全路径,则跳过查找这一步

          3:在子进程中,以新程序取代shell复制并执行,此时父进程进入休眠状态,等待子进程执行完毕。

          4:子进程执行完毕后,父进程接着从终端取下一个命令。

三、总结 

          在用bash调用脚本的时候,父进程接收到命令,发现不是内建命令,于是会创建一个和自己一模一样的shell进程来执行这个外部命令。这个子进程中设置了自己的运行的环境变量。而在此时,父进程的环境变量并没有改变。子进程执行完毕,消亡。这是一直等待的父进程来继续接收命令。而在用source来执行脚本的时候,不会创建子进程,而是在父进程中直接执行。所以当需要程序修改当前shell本身的环境变量的时候,使用source命令。

附测试脚本

        分别使用bash和source执行以下脚本,执行完毕后重新运行pwd命令,会发现使用bash命令脚本执行前后路径并没有发生变化,而使用source执行脚本后路径发生了变化

#!/bin/bash
cd /tmp
echo "hello world"

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值