为什么无法export到环境变量?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
百草谷居士
帖子: 4025
注册时间: 2006-02-10 16:36
系统: debian12/xubuntu2404

为什么无法export到环境变量?

#1

帖子 百草谷居士 » 2008-11-22 9:06

我想在脚本中通过export命令增加一个环境变量。比如下面的例子:

代码: 全选

#!/bin/bash
export VAR1='My test var.'
echo $VAR1
当我在shell下运行这个脚本的时候看样子是正常的,但是当我使用echo $VAR1命令时,却发现VAR1并没有作为环境变量被生成。
问题出现在哪里呢?
Mint 22 / Xubuntu 24.04

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: 为什么无法export到环境变量?

#2

帖子 cnkilior » 2008-11-22 12:34

子shell和父shell
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: 为什么无法export到环境变量?

#3

帖子 xhy » 2008-11-22 16:37

假设你的脚本名字是 abc.sh

不要

代码: 全选

 ./abc.sh
这样运行

你可以

代码: 全选

source abc.sh
或者

代码: 全选

.     abc.sh
直接运行一个脚本,会启动一个子进程,在子进程中解释那段脚本,而子进程export的变量是无法传递给父进程的

使用source或者.运行脚本,不会在子进程中执行,而是直接在当前shell进程运行
目前负债150多万
wstoneh
帖子: 38
注册时间: 2008-09-01 15:57

Re: 为什么无法export到环境变量?

#4

帖子 wstoneh » 2008-11-28 21:31

3楼说的没错,使用source abc.sh
回复