Linux 中 source命令 和 bash命令的区别
001、
Linuxbash和source命令的区别在于,当你用bash命令执行脚本时,它告诉Linux内核创建一个新的Bash进程来读取和执行脚本,将输出复制到原先的shell进程中,并显示下来.
然而source命令是一个外置的shell,它读取和评估当前shell进程中的文件。为此,脚本所做的所有修改都将保留在Bashshell中。
a、bash
[root@PC1 test2]# ls test.txt [root@PC1 test2]# cat test.txt ## 准备一个测试脚本 var1=100 echo $var1 [root@PC1 test2]# echo $var1 ## 此时的var1变量为空 [root@PC1 test2]# bash test.txt ## 利用bash命令执行该测试脚本 100 [root@PC1 test2]# echo $var1 ## var1变量没有任何变化
。
b、source
[root@PC1 test2]# ls test.txt [root@PC1 test2]# cat test.txt var1=100 echo $var1 [root@PC1 test2]# echo $var1 [root@PC1 test2]# source test.txt ## 利用source执行该命令 100 [root@PC1 test2]# echo $var1 ## var1变量被修改为100 100
。
002、实例:软件环境变量
[root@PC1 plink]# ls LICENSE plink plink_linux_x86_64_20241022.zip prettify test.sh toy.map toy.ped [root@PC1 plink]# pwd /home/software/plink [root@PC1 plink]# cat test.sh ## 测试脚本 PATH=$PATH:/home/software/plink [root@PC1 plink]# plink ## 测试软件是否有环境变量 bash: plink: command not found... Similar command is: 'link' [root@PC1 plink]# bash test.sh ## 利用bash执行该脚本 [root@PC1 plink]# plink ## plink仍然不可调用 bash: plink: command not found... Similar command is: 'link' [root@PC1 plink]# source test.sh ## 利用source执行该脚本 [root@PC1 plink]# plink ## plink可以调用 PLINK v1.9.0-b.7.7 64-bit (22 Oct 2024) cog-genomics.org/plink/1.9/ (C) 2005-2024 Shaun Purcell, Christopher Chang GNU General Public License v3 plink <input flag(s)...> [command flag(s)...] [other flag(s)...] plink --help [flag name(s)...] Commands include --make-bed, --recode, --flip-scan, --merge-list, --write-snplist, --list-duplicate-vars, --freqx, --missing, --test-mishap, --hardy, --mendel, --ibc, --impute-sex, --indep-pairphase, --r2, --show-tags, --blocks, --distance, --genome, --homozyg, --make-rel, --make-grm-gz, --rel-cutoff, --cluster, --pca, --neighbour, --ibs-test, --regress-distance, --model, --bd, --gxe, --logistic, --dosage, --lasso, --test-missing, --make-perm-pheno, --tdt, --qfam, --annotate, --clump, --gene-report, --meta-analysis, --epistasis, --fast-epistasis, and --score. "plink --help | more" describes all functions (warning: long).
小结:
01、bash会创建一个子叉shell进行来执行脚本,变量的修改不影响父进程的环境变量
02、source执行脚本则会直接在当前的shell中执行命令,变量的修改直接影响环境变量。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2024-02-23 linux 中 awk 中 geline函数的用法及其与next的区别
2024-02-23 linux akw中常用的内置计算函数
2024-02-23 linux 中 awk 之 sub、gsub、substr、index、match函数的用法
2021-02-23 python中实现列表倒序排列
2021-02-23 python中如何清空列表
2021-02-23 python中提取列表的奇数元素和偶数元素
2021-02-23 python中如何提取列表的前几个元素和后几个元素