0

我已经做出了非常真诚的努力来解决这个问题,但我做不到。这是我非常简单的 bash 脚本。以“export”和“echo”开头的行似乎有效,所以我知道我的脚本正在执行。如果我在终端的提示符处输入以“source”开头的行,我会得到很多打印输出,表明该命令正在运行,但是如果我执行我的脚本,则什么也没有发生(事实上,随后使用 Freesurfer 的努力表明它没有工作)。我有一种感觉,可能有一些非常基本的东西我不了解 bash 脚本,但我无法通过查看教程来弄清楚那是什么。

#!/bin/bash

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

1 回答 1

0

如果您使用./scriptname.sh它运行脚本,则会在子shell 中执行。在那里设置的每个变量等都不能改变父 shell 的环境。为此,您需要source脚本。

参见例如。这个关于超级用户的问题

于 2013-02-12T20:33:52.580 回答