linux 下souce和 export详解

source

source 是一个在 Unix-like 操作系统(如 Linux 和 macOS)的 shell(如 bash、zsh、sh)中使用的命令。它用于执行指定文件中的命令,并将这些命令在当前 shell 会话中执行。source 命令通常用于加载配置文件或脚本文件,使得这些文件中的变量和函数在当前 shell 会话中生效。

  1. source 命令的基本用法
    基本语法:
source <文件名>

<文件名>:要执行的脚本或配置文件的路径。
示例:

source ~/.bashrc

在这个示例中,source 命令将执行位于用户主目录下的 .bashrc 配置文件,使得文件中的环境变量和配置在当前 shell 会话中生效。

  1. source 命令的功能
    执行脚本:source 命令会读取并执行指定文件中的所有命令,这些命令在当前 shell 环境中执行。
    加载配置:常用于加载 shell 配置文件(如 .bashrc、.bash_profile)和环境变量设置文件。
    定义函数:可以在脚本文件中定义函数,并通过 source 命令使这些函数在当前 shell 会话中可用。
  2. source 和 . 的区别
    在许多 Unix-like 系统的 shell 中,source 命令和点命令(.)是等效的,它们都用于执行指定文件中的命令。点命令是 source 的简写形式。

点命令示例:

. ~/.bashrc

两者的功能是相同的,可以根据个人习惯选择使用 source 还是点命令。

  1. source 命令的实际应用
    4.1 加载环境变量
    在 .bashrc 或 .zshrc 文件中设置环境变量,并通过 source 命令使其生效:
export MY_VARIABLE="my_value"

执行:

source ~/.bashrc

4.2 定义和加载函数
定义一个包含函数的脚本文件 my_functions.sh:

# my_functions.sh
my_function() {
    echo "Hello from my_function!"
}

通过 source 命令加载函数:

source my_functions.sh
my_function

4.3 加载配置文件
例如,加载自定义的 git 配置文件 gitconfig.sh:

# gitconfig.sh
export GIT_USER_NAME="my_username"
export GIT_USER_EMAIL="my_email@example.com"

执行:

source gitconfig.sh

  1. 注意事项
    路径:指定的文件路径可以是绝对路径或相对路径。相对路径是相对于当前工作目录的。
    错误处理:如果指定的文件不存在或不可读,source 命令会返回错误信息。
    文件权限:确保文件具有适当的读取权限,以便 source 命令可以成功执行。
  2. source 的常见用途
    环境配置:在开发过程中,常常需要设置环境变量或配置文件,通过 source 命令可以方便地加载这些配置。
    函数定义:将函数定义放在单独的文件中,并在需要时通过 source 命令加载,保持代码的模块化和可维护性。
    脚本执行:在脚本中动态加载其他脚本的功能,例如,在启动脚本中加载环境配置和工具函数。
    总结
    source 命令在 Unix-like 系统的 shell 中用于执行指定文件中的命令,并在当前 shell 会话中生效。它常用于加载配置文件、定义函数和执行脚本。source 命令与点命令(.)功能相同,都可以用来模拟脚本的“并入”当前 shell 环境。理解和使用 source 命令可以帮助你更有效地管理和配置你的 shell 环境。

export

export 是一个在 Unix-like 操作系统(如 Linux 和 macOS)中的 shell(如 bash、zsh)中使用的命令,用于设置环境变量并将其导出到子进程。通过 export,可以将变量的值传递给当前 shell 会话的子进程,使得这些变量对这些子进程可见。

  1. export 命令的基本用法
    基本语法:
export VARIABLE_NAME=value

VARIABLE_NAME:要设置的环境变量名称。
value:环境变量的值。
示例:

export PATH="/usr/local/bin:$PATH"

在这个示例中,export 命令将 /usr/local/bin 添加到 PATH 环境变量的开头。这样,任何在当前 shell 会话中启动的程序都可以访问到这个新的 PATH 值。

  1. export 命令的功能
    设置环境变量:可以用 export 命令设置新的环境变量。
    修改现有变量:可以通过 export 修改已有环境变量的值。
    子进程可见:设置的环境变量会影响当前 shell 会话及其所有子进程,确保子进程能访问到这些变量。
  2. export 的详细使用
    3.1 设置新环境变量
export MY_VAR="Hello, World!"

设置一个新的环境变量 MY_VAR 并赋值为 “Hello, World!”。在当前 shell 会话及其子进程中都可以访问 MY_VAR。

3.2 修改已有环境变量

export PATH="/usr/local/bin:$PATH"

修改 PATH 环境变量,添加 /usr/local/bin 到 PATH 的开头。这样,系统在查找可执行文件时会首先在 /usr/local/bin 中查找。

3.3 显示环境变量
要显示所有导出的环境变量,可以使用 printenv 或 env 命令:

printenv

env

要显示特定环境变量的值:

echo $MY_VAR

3.4 在脚本中使用 export
在 shell 脚本中设置环境变量并导出:

#!/bin/bash
export DATABASE_URL="mysql://localhost/mydb"
./run_my_script.sh

在脚本 run_my_script.sh 中,可以访问 DATABASE_URL 环境变量。

  1. export 与变量的作用域
    局部变量:如果不使用 export 命令,变量仅在当前 shell 会话中有效,无法被子进程访问。
    环境变量:使用 export 命令设置的变量成为环境变量,对当前 shell 会话及其所有子进程可见。
  2. export 与 unset
    unset 命令:用于删除环境变量。可以用 unset 删除使用 export 设置的环境变量。
unset MY_VAR

上述命令会删除 MY_VAR 环境变量,使其在当前 shell 会话及子进程中不可用。
6. 环境变量的优先级
命令行:在 shell 启动时可以通过命令行参数设置环境变量。
配置文件:可以在 .bashrc、.bash_profile、.zshrc 等配置文件中设置和导出环境变量,这些变量在每次启动新的 shell 会话时自动生效。
7. export 在不同 shell 中
虽然 export 命令在 bash、zsh 等 shell 中用法类似,但不同的 shell 可能会有一些细微的差别。以下是 export 在常见 shell 中的使用:

Bash:export 是 Bash 中设置和导出环境变量的标准命令。
Zsh:export 在 Zsh 中也用于设置和导出环境变量,功能与 Bash 类似。
Sh:export 在 POSIX 兼容的 sh 中也可以使用,但某些老版本的 sh 可能不完全支持。
总结
export 命令用于设置和导出环境变量,使得这些变量对当前 shell 会话及其所有子进程可见。它是 Unix-like 系统中管理环境变量的基本工具。理解 export 的用法可以帮助你更好地配置和管理系统环境,特别是在开发和运维过程中。

  • 33
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值