当我修改了 / etc/profile 文件, 我想让它立刻生效, 而不用重新登录; 这时就想到用 source 命令, 如: source /etc/profile
对 source 进行了学习, 并且用它与 sh 执行脚本进行了对比, 现在总结一下.
source 命令:
source 命令也称为 "点命令", 也就是一个点符号(.), 是 bash 的内部命令.
功能: 使 Shell 读入指定的 Shell 程序文件并依次执行文件中的所有语句
source 命令通常用于重新执行刚修改的初始化文件, 使之立即生效, 而不必注销并重新登录.
用法:
source filename 或 . filename
source 命令 (从 C Shell 而来) 是 bash shell 的内置命令; 点命令 (.), 就是个点符号(从 Bourne Shell 而来) 是 source 的另一名称.
source filename 与 sh filename 及./filename 执行脚本的区别在那里呢?
1. 当 shell 脚本具有可执行权限时, 用 sh filename 与./filename 执行脚本是没有区别得../filename 是因为当前目录没有在 PATH 中, 所有 "." 是用来表示当前目录的.
2.sh filename 重新建立一个子 shell, 在子 shell 中执行脚本里面的语句, 该子 shell 继承父 shell 的环境变量, 但子 shell 新建的, 改变的变量不会被带回父 shell, 除非使用 export.
3.source filename: 这个命令其实只是简单地读取脚本里面的语句依次在当前 shell 里面执行, 没有建立新的子 shell. 那么脚本里面所有新建, 改变变量的语句都会保存在当前 shell 里面.
举例说明:
1. 新建一个. sh 脚本, 内容为: A=1
2. 然后使其可执行 chmod +x test.sh
3. 运行 sh test.sh 后, echo $A, 显示为空, 因为 A=1 并未传回给当前 shell
4. 运行./test.sh 后, 也是一样的效果
5. 运行 source test.sh 或者 . test.sh, 然后 echo $A, 则会显示 1, 说明 A=1 的变量在当前 shell 中
来源: http://www.bubuko.com/infodetail-3090421.html