Bash 从shell运行但不从脚本运行的freesurfer命令

Bash 从shell运行但不从脚本运行的freesurfer命令,bash,shell,Bash,Shell,我想用freesurfer的lta convert转换一个转换矩阵。 如果在bash shell中运行以下命令(echo$0显示-bash) 它运行正常: $Id: lta_convert.cpp,v 1.9.2.1 2016/08/09 02:33:22 zkaufman Exp $ --inlta: input.lta input LTA transform. --outfsl: output.mat output FSL matrix. LTA read, type : 1 0.93

我想用freesurfer的lta convert转换一个转换矩阵。 如果在bash shell中运行以下命令(echo$0显示-bash)

它运行正常:

$Id: lta_convert.cpp,v 1.9.2.1 2016/08/09 02:33:22 zkaufman Exp $

--inlta: input.lta input LTA transform.
--outfsl: output.mat output FSL matrix.
 LTA read, type : 1
 0.93123   0.02020   0.00726  -12.56508;
-0.00133   0.92407   0.00102  -2.41168;
 0.00007   0.02780   1.00388   21.38016;
 0.00000   0.00000   0.00000   1.00000;
FSLOUTPUTTYPE NIFTI_GZ 
tkreg2FSL: mov det = 8, ref det = 1
INFO: FSL2FreeSurfer: Mov volume is NIFTI with positive det,
  applying LR flip to registration matrix.
INFO: FSL2FreeSurfer: Ref volume is NIFTI with positive det,
  applying LR flip to registration matrix.
lta_convert successful.`
但如果我尝试在包含以下两行的shell脚本中运行相同的命令:

#!/bin/bash

lta_convert -inlta input.lta --outfsl output.mat
这给我带来了一个错误

$Id: lta_convert.cpp,v 1.9.2.1 2016/08/09 02:33:22 zkaufman Exp $

dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address
  Referenced from: /Applications/freesurfer/bin/../lib/gcc/lib/libgomp.1.dylib
  Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: ___emutls_get_address
  Referenced from: /Applications/freesurfer/bin/../lib/gcc/lib/libgomp.1.dylib
  Expected in: /usr/lib/libSystem.B.dylib

./test.sh: line 3: 91440 Abort trap: 6           lta_convert -inlta input.lta --outfsl output.mat
为什么会发生这种情况?我如何解决?
其他freesurfer命令,如mri_robust_register,从shell运行时不会出现问题。我正在Mac OS 10.12.4上运行脚本。

您遇到的问题可能与环境变量
DYLD\u LIBRARY\u PATH
由于系统完整性保护而未被传播有关。本例中的解决方法是检查
DYLD\u LIBRARY\u PATH
LD\u LIBRARY\u PATH
freesurfer
工作时的值,并在运行bash脚本之前在其中设置这些变量


以下问题中有更多信息:

找到了解决方案。在脚本中添加一行,使其显示:

#!/bin/bash

source $FREESURFER_HOME/SetUpFreeSurfer.sh
lta_convert -inlta input.lta --outfsl output.mat
#!/bin/bash

source $FREESURFER_HOME/SetUpFreeSurfer.sh
lta_convert -inlta input.lta --outfsl output.mat