网站首页 > 基础教程 正文
前言
继续给大家发布关于Linux shell的内容,本文讲述的主要内容有source命令和export命令,另外还涉及到了.bash_profile,bash shell,C Shell,这些东西在之前的头条号旧文中已经说过了,请自行查阅吧。
1、source命令起源
Linux是个多任务,多用户的操作系统,所以在Linux里面进程和子进程随处可见,不经意间就会从父进程里面诞生出一个子进程,从而实现任务分解的效果,达到多任务的最终目标。
例如,当我们查看linux进程用ps命令的时候,此时你会发现出来两个进程:bash进程和ps进程,如下所示:
[root@host ~]# ps
PID TTY TIME CMD
29619 pts/0 00:00:00 bash
29680 pts/0 00:00:00 ps
其中,bash进程为父进程,父shell,而ps为子进程,子shell。
不仅使用Linux内置命令如此,即便我们自己编写shell脚本,也是同理。例如,当我们在shell的命令行窗口执行./a.sh的时候,会启动一个子shell。相对于当前的shell进程来说,a.sh就是以子进程。需要注意的是,my.sh脚本里面的变量属于局部变量,不能被它的兄弟shell或者父shell所看到。
当我们在登录Linux系统之后,对.bash_profile 中的环境变量做了修改,即便执行此脚本也无法即时生效,必须注销并重新登录才行。这个时候可以使用source命令。用source命令重新执行.bash_profile 就能立即生效,而不用注销并重新登录。早期的window修改系统变量或用户变量,也需要重启才能生效,亦是同样道理。
2、source命令与点命令
source 命令是 bash shell 的内置命令,从 C Shell 而来。source 命令的另一种写法是点符号,用法和 source 相同,从Bourne Shell而来。需要注意的是,点命令与表示当前目录的点符号要区分开来。
3、source命令与export命令的区别
source的字面意思是“起源、根源”,用source执行shell脚本,不会启动子shell进程,而是直接在当前shell进程中运行。
source 命令可以强行让一个脚本去立即影响当前的环境。source 命令通常用于重新执行刚修改的初始化文件,如 .bash_profile 和 .profile 等等。
source用于执行脚本,而export用于修饰变量。export的字面意思是“导出、出口”,将shell进程的变量“导出”到子shell进程或者兄弟shell里面。
简言之,source 命令可以影响执行脚本的父shell的环境,而 export 则只能影响其子shell的环境。
备注:本文源自《趣谈shell》,解密Linux江湖故事,用非线性思维学习shell,让天下没有难学的shell。
猜你喜欢
- 2024-10-17 Gulp 导出任务 excel正在导出请稍后前往导出任务列表下载
- 2024-10-17 word转pdf免费网站 word转化pdf免费
- 2024-10-17 Linux知识点之变量与环境变量 linux环境变量生效顺序
- 2024-10-17 JS module的导出和导入的实现代码
- 2024-10-17 Linux下的文件操作和系统交互 linux与linux之间文件传输
- 2024-10-17 oracle逻辑备份与恢复|常用导出导入命令介绍
- 2024-10-17 快来看看这些shell基础知识你知道几个
- 2024-10-17 Linux怎么设置环境变量 linux设置环境变量ld_library_path
- 2024-10-17 Linux 系统中PATH一个示例 linux的path
- 2024-10-17 Python Anaconda导出(export)环境到environment.yml文件
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- mysql教程 (60)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)