export命令

      export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。 一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。

-f:代表[变量名称]中为函数名称;
-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中;
-p:列出所有的shell赋予程序的环境变量。

示例

if [ $# -eq 0 ]
then
echo "Usage:x_shift2.sh 参数"
exit 1
fi
sum=0
until [ $# -eq 0 ]
do
sum=`expr $sum + $1`
shift
done
echo "sum is: $sum"
sum is : 45
       shift命令还有另外一个重要用途,Bsh定义了9个位置变量,从$1到$9,这并不意味着用户在命令行只能使用9个参数,借助shift命令可以访问多于9个的参数。
  shift命令一次移动参数的个数由其所带的参数指定。例如当shell程序处理完前九个命令行参数后,可以使用shift9命令把$10移到$1。


在 linux 里设置环境变量的方法 ( export PATH )

一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。例如我的mips-linux-gcc编译器在“/opt/au1200_rm /build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量:

1、直接用export命令:
#export PATH=$PATH:/opt/au1200_rm/build_tools/bin
查看是否已经设好,可用命令export查看。


2、#vi /etc/profile
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

3. 修改.bashrc文件:
# vi /root/.bashrc
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下:

4、# echo $PATH
看看输出里面是不是已经有了 /my_new_path这个路径了。


这样的格式是在之前的格式下继续添加:export $PATH="$PATH:路径1:路径2:...:路径n”

<think> 我们正在讨论`export`命令的使用方法。根据用户的要求,我们需要详细说明`export`命令,并参考提供的引用内容。同时,注意格式要求,特别是数学表达式的格式和引用标识。 引用内容摘要: [^1]:介绍了export命令在Linux系统中的用法及常见使用场景,包括定义全局变量、临时设置环境变量和在脚本中传递变量。 [^2]:关于SVN的export命令,但与我们讨论的shell的export无关,可忽略。 [^3]:解释了export命令的作用:将一个变量的值传递给后续的shell进程或脚本。 [^4]:详细说明了export命令的格式、选项和常用示例。 [^5]:给出了一个设置环境变量的例子,使用export和source。 根据这些引用,我们可以整理出以下关于`export`命令的详细说明: 1. 作用:`export`命令用于设置或导出环境变量,使得这些变量在当前shell会话中创建的任何子进程(包括子shell和脚本)都可以访问。 2. 语法:`export [选项] [变量名称[=值]] ...` 3. 选项: - `-f`:将函数名作为变量导出。 - `-n`:删除指定变量的导出属性(变量本身仍然存在,但后续命令不再能访问)。 - `-p`:列出所有导出的变量(如果不带任何参数,默认行为就是`-p`)。 4. 重要特性: - 环境变量只在当前shell会话中有效,如果退出会话,则设置的环境变量会消失(除非写入配置文件如`.bashrc`)。 - 环境变量可以被后续执行的子进程(如脚本、程序)访问。 5. 使用场景: - 定义全局变量:在一个shell脚本中导出变量,以便在该脚本调用的其他脚本中使用。 - 临时设置环境变量:例如临时设置`PATH`、`LD_LIBRARY_PATH`等。 - 在脚本中传递变量:父脚本中导出的变量可以在子脚本中使用。 6. 与`env`命令的区别: - `export`是shell内置命令,用于设置当前shell的环境变量,并影响后续子进程。 - `env`是一个独立程序,用于在修改后的环境中运行命令,不会影响当前shell环境。 7. 与`source`命令的关系: - `source`命令(或`.`)用于在当前shell中执行脚本,而不是在子shell中执行。因此,在脚本中设置的变量(即使没有用`export`)也会影响当前shell。 - 而使用`export`设置的变量会传递给子进程,但无法传递给父进程。 根据以上内容,我们可以写出详细说明。 注意:用户要求使用中文,并且对数学表达式使用$...$格式(但export命令本身不涉及太多数学,所以可能用不到,但如果有变量赋值,可以用`$变量名`表示)。 另外,生成相关问题。 </think> ### Linux `export` 命令详细使用说明 `export` 是 Shell 环境的核心命令,用于**定义全局环境变量**,使其对当前 Shell 会话及其所有子进程可见[^3][^4]。与普通变量不同,导出的变量可被后续执行的脚本、程序和子 Shell 继承使用。 --- #### **基本语法** ```bash export [选项] [变量名=值] ``` #### **核心选项** | 选项 | 作用 | |------|------| | `-p` | 列出当前所有导出变量(默认行为) | | `-f` | 导出**函数**而非变量(如 `export -f myfunc`) | | `-n` | 移除变量的导出属性(变量仍存在但不被子进程继承) | | `--` | 显式终止选项解析 | --- ### **核心功能与示例** #### 1. **定义全局环境变量** ```bash export PATH="/usr/local/bin:$PATH" # 添加自定义路径到PATH export JAVA_HOME="/opt/jdk-17" # 设置Java路径 ``` - 效果:子进程(如 `python`、`bash` 脚本)可读取 `$JAVA_HOME`[^3] #### 2. **临时修改变量值** ```bash export LANG=C # 临时设置语言为英文 ./run_test.sh # 子脚本继承LANG=C ``` - 恢复方法:重启 Shell 或 `export LANG="原值"` #### 3. **跨脚本传递变量** **父脚本 `parent.sh`**: ```bash #!/bin/bash export DB_HOST="db.example.com" # 导出变量 ./child.sh # 启动子脚本 ``` **子脚本 `child.sh`**: ```bash #!/bin/bash echo "Connecting to $DB_HOST" # 成功读取父脚本变量 ``` [^3] #### 4. **删除导出属性** ```bash export -n DB_HOST # 移除导出属性 ./child.sh # 子脚本无法读取 DB_HOST ``` ⚠️ 变量仍存在于当前 Shell,仅取消导出 #### 5. **导出函数** ```bash # 定义函数 greet() { echo "Hello, $1!"; } export -f greet # 导出函数 # 子进程调用 bash -c 'greet "World"' # 输出:Hello, World! ``` [^4] --- ### **环境变量生命周期** | 操作 | 影响范围 | 持久性 | |--------------------|-------------------|--------------| | `export VAR=value` | 当前 Shell + 子进程 | 会话结束失效 | | 写入 `~/.bashrc` | 所有新 Shell | 永久生效 | | `source ~/.bashrc` | 立即生效 | 依赖配置文件 | **持久化示例**(写入 `~/.bashrc`): ```bash echo 'export HISTSIZE=5000' >> ~/.bashrc # 历史命令记录上限 source ~/.bashrc # 立即生效 ``` [^5] --- ### **与 `env` 命令的区别** | | `export` | `env` | |----------|------------------------------|-------------------------------| | **类型** | Shell 内置命令 | 独立程序 | | **作用** | 修改当前 Shell 环境 | 创建临时环境执行命令 | | **影响** | 影响后续所有子进程 | 仅影响单次命令 | | **示例** | `export X=1; python script.py` | `env X=1 python script.py` | --- ### **典型错误处理** 1. **`export: 未找到命令`**: - 原因:在非 Bash Shell(如 `dash`)中执行 - 解决:显式启动 Bash `bash -c "export X=1"` 2. **变量未传递**: - 检查是否使用 `export` - 确认子进程是当前 Shell 的子进程(非并行启动) --- ### **应用场景** | 场景 | 命令示例 | |-----------------------|----------------------------------| | 配置开发环境 | `export GOPATH="$HOME/go"` | | 脚本参数传递 | `export CONFIG_FILE="app.cfg"` | | 临时调整工具行为 | `export GIT_TRACE=1` | | 跨会话持久化(需写入配置文件) | `echo 'export EDITOR=vim' >> ~/.bashrc` | [^1][^4] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值