2013-02-12 49 views
0

我已经做出了真正的努力来弄清楚这一点,而我却做不到。这是我非常简单的bash脚本。开始“导出”和“回声”的行似乎有效,所以我知道我的脚本正在执行。如果我在终端的提示符处输入以“source”开始的行,我会得到很多打印的输出,表明该命令正在运行,但是如果执行我的脚本,则不会发生任何事情(事实上,后续使用Freesurfer的努力表明它没有工作)。我有一种感觉,可能有一些非常基本的东西,我没有得到关于bash脚本的知识,但我无法弄清楚看看教程是什么。新的bash脚本;试图弄清楚为什么SOURCE命令不会执行

#!/bin/bash 

export FREESURFER_HOME=/foo/freesurfer 
echo "starting freesurfer" 
echo $FREESURFER_HOME 
source $FREESURFER_HOME/SetUpFreeSurfer.sh 
export SUBJECTS_DIR=/bar/my_dir 
+0

你如何执行这个脚本?您还需要“源代码”,以使其对环境所做的更改在当前shell中生效。 – chepner 2013-02-12 20:32:49

+0

这似乎确实是问题所在!我没有意识到我需要使用source命令,即使我的脚本包含source命令。非常感谢! – Katie 2013-02-12 20:38:30

回答

0

如果使用./scriptname.sh运行脚本,它将在子shell中执行。在那里设置的每个变量都不能改变父shell的环境。为了做到这一点,你需要source这个脚本。

参见例如。这个问题上superuser

+0

谢谢!这非常明确。 – Katie 2013-02-12 20:52:18