使變數成為環境變數

那麼,變數要如何處理,才能為子 shell 取用呢?

當子 shell 產生時,它會繼承父 shell 的環境變數等條件,因此,只要使變數成為環境變數,就能為子 shell 取用。變成環境變數的方法是使用 export 這個命令。

testVAR="Hello World"
export testVAR

或

export testVAR="Hello World"

則上述 testVAR.sh 即可取得 testVAR 這個變數的值了。

export 若單獨執行,會列出目前所有的環境變數:

export

declare -x COLORFGBG="15;default;0"
declare -x COLORTERM="rxvt-xpm"
declare -x DISPLAY=":0.0"
declare -x GS_LIB="/home/ols3/.kde/share/fonts"
declare -x GTK_RC_FILES="/etc/gtk/gtkrc:/home/ols3/.gtkrc"
declare -x HISTSIZE="1000"
declare -x HOME="/home/ols3"
declare -x HOSTNAME="programmer.tnc.idv.tw"
declare -x INPUTRC="/etc/inputrc"
declare -x KDE_MULTIHEAD="false"
declare -x KDE_STARTUP_ENV="programmer.tnc.idv.tw;1028124857;691068;872"
declare -x LANG="zh_TW.Big5"
declare -x LC_CTYPE="zh_TW.Big5"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="ols3"
declare -x LS_COLORS=""
declare -x MAIL="/var/spool/mail/ols3"
declare -x OLDPWD="/home/ols3/write/shell-intro"
declare -x PATH="/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/home/ols3/bin:/usr/java/j2sdk1.4.0_01/bin"
declare -x PWD="/home/ols3/write/shell-intro/samples"
declare -x QTDIR="/usr/lib/qt3-gcc2.96"
declare -x SESSION_MANAGER="local/programmer.tnc.idv.tw:/tmp/.ICE-unix/889"
declare -x SHELL="/bin/bash"
declare -x SHLVL="3"
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
declare -x TERM="vt102"
declare -x USER="ols3"
declare -x WINDOWID="35651587"
declare -x XDM_MANAGED="/var/run/xdmctl/xdmctl-:0,maysd,mayfn,sched"
declare -x XMODIFIERS="@im=xcin"
declare -x testVAR="Hello world"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

由上面的列表,可看出 testVAR 已變成環境變數囉。

另外,也不難發現:export testVAR 其實就是 declare -x testVAR