source命令与点命令的区别及使用

需积分: 9 1 下载量 48 浏览量 更新于2024-09-18 收藏 32KB DOC 举报
"source命令与“.”点命令的使用和区别" source命令和“.”点命令在Linux和Unix系统中是等价的,主要用于在当前shell环境中执行一个脚本,而不是打开一个新的子shell来运行。这一特性使得它们在系统配置、环境变量设定等方面显得尤为有用。 1. **source命令的起源和用途** source命令起源于CShell,而在Bourne Shell中,它的等价形式是“.”点命令。这两种方式都是为了在当前shell上下文中执行脚本,这意味着脚本中定义的环境变量、函数和设置会直接影响到当前的shell环境,而不会在执行完脚本后消失。 2. **执行方式和影响范围** - 当你使用`source script.sh`或`./script.sh`时,两者之间的主要区别在于环境变量的持久性。如果使用`./script.sh`,脚本会在一个子shell中运行,任何环境变量的改变仅限于这个子shell,当脚本结束,这些改变不会传递回父shell。因此,如果你在脚本中export了一个变量,如`export KKK=111`,然后在脚本外部尝试`echo $KKK`,你会发现没有值。但如果使用`source script.sh`,变量`KKK`就会在当前shell中设置,之后的`echo $KKK`会显示值为111。 - `source`命令常用于重新加载用户的配置文件,如`.bashrc`,`.bash_profile`或`.profile`,以便立即应用所做的改动,而无需退出并重新登录。例如,更新了`.bashrc`文件后,你可以执行`source ~/.bashrc`来使更改生效。 3. **执行脚本的内部命令** 点命令(`.`)是shell的内部命令,这意味着它不会启动新的shell进程,而是直接在当前进程中执行脚本中的所有命令。这种方式避免了因开启新进程导致的性能开销,同时也确保了对当前环境的直接修改。 4. **在Android开发中的应用** 在Android开发中,`source build/envsetup.sh`是一个常见的操作,它设置了构建环境,允许用户执行像`mm`这样的构建命令。如果不执行此步骤,许多特定于环境的设置将无法正确工作。 5. **与export命令的区别** `export`命令用于将变量导出到子shell,而`source`命令则是直接影响当前shell环境。这意味着,如果在脚本中使用`export`设置的变量,只有在使用`source`执行脚本时,这些变量才会在当前shell及其子shell中可用。 总结来说,`source`命令和“.”点命令是Linux和Unix shell中的重要工具,它们用于在不创建新shell实例的情况下执行脚本,这对于保持和更新当前shell环境的状态至关重要。理解和熟练使用这两个命令对于日常的系统管理和脚本编写非常有帮助。