BASH:在我的脚本中设置环境变量不会';不要将其设置在其他任何地方-如何在全球范围内导出?内的简单示例

BASH:在我的脚本中设置环境变量不会';不要将其设置在其他任何地方-如何在全球范围内导出?内的简单示例,bash,unix,environment-variables,Bash,Unix,Environment Variables,相反,您应该尝试以下操作: PROMPT> pwd /Users/jon/dev/test PROMPT> ls -al total 8 drwxr-xr-x 3 jon 102B Aug 27 21:34 ./ drwxr-xr-x 14 jon 476B Aug 27 21:33 ../ -rwxr-xr-x 1 jon 147B Aug 27 21:34 init* PROMPT> cat init #!/bin/sh DIR="$( cd "$

相反,您应该尝试以下操作:

PROMPT> pwd
/Users/jon/dev/test

PROMPT> ls -al
total 8
drwxr-xr-x   3 jon   102B Aug 27 21:34 ./
drwxr-xr-x  14 jon   476B Aug 27 21:33 ../
-rwxr-xr-x   1 jon   147B Aug 27 21:34 init*

PROMPT> cat init
#!/bin/sh
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
export SCRIPT_HOME=${DIR%/bin}
echo "SCRIPT_HOME has been set to: $SCRIPT_HOME"

PROMPT> ./init
SCRIPT_HOME has been set to: /Users/jon/dev/test

PROMPT> echo $SCRIPT_HOME

PROMPT> why did that command not work?
-bash: why: command not found

PROMPT> 

注意额外的点
/init
之间的空格。这很重要。它类似于
source init

export
使shell变量可用于在其中定义它的shell的任何子进程,但不可用于在其中定义它的shell的父进程。请改用source脚本。
PROMPT>. ./init