Определение источника sh файла недопустимо в tcsh

После решения, что один, я пытался получить sh редактирование сценария csh.cshrc. Я добавил следующие строки в его конце:

. /etc/fsl/5.0/fsl.sh
setenv FREESURFER_HOME/home/User/freesurfer
source $FREESURFER_HOME/SetUpFreeSurfer.csh

Но я получаю ошибку /usr/sbin/.: Permission denied.. Я пытался изменить его на source /etc/fsl/5.0/fsl.sh купленный затем я получил ошибку Illegal variable name..

Файл, который я пытаюсь получить:

# FSL configuration file
#  - to be sourced by the user, typically in .bashrc or equivalent
#  - note that the user should set
# Written by Mark Jenkinson, FMRIB Analysis Group, University of Oxford
# Modified for Debian by Michael Hanke <michael.hanke@gmail.com>

# clean out previous fsl PATH components: DO NOT EDIT THE NEXT TWO LINES
PATH=$( echo $PATH | tr ":" "\n" | grep  -v "/usr/lib/fsl/" | tr -s "\n" ":" | sed  's/:$//') 
LD_LIBRARY_PATH=$( echo $LD_LIBRARY_PATH | tr ":" "\n" | grep  -v "/usr/lib/fsl/" |  tr -s "\n" ":" | sed 's/:$//')

#### Set up standard FSL user environment variables ####

# Debian has a fixed FSLDIR
FSLDIR=/usr/share/fsl/5.0

# Possum is installed in the same directory
POSSUMDIR=$FSLDIR

# add the fsl binary path to the search path
PATH=$PATH:/usr/lib/fsl/5.0

# The following variable selects the default output image type
# Legal values are:
# NIFTI, NIFTI_PAIR, NIFTI_GZ, NIFTI_PAIR_GZ
# This would typically be overwritten in ${HOME}/.fsl/fsl.sh if the user
# wished to write files with a different format
FSLOUTPUTTYPE=NIFTI_GZ

# Comment out the definition of FSLMULTIFILEQUIT to enable
#  FSL programs to soldier on after detecting multiple image
#  files with the same basename ( e.g. epi.hdr and epi.nii )
FSLMULTIFILEQUIT=TRUE

# The following variables specify paths for programs and can be changed
# or replaced by different programs, by default set sensible Debian-defaults
FSLTCLSH=/usr/bin/tclsh
FSLWISH=/usr/bin/wish
FSLBROWSER=/etc/alternatives/x-www-browser

# The following variables are used for running code in parallel across
#  several machines ( i.e. for FDT )
# for a cluster engine setup see below
FSLLOCKDIR=
FSLMACHINELIST=
FSLREMOTECALL=

# If set, tell FSL to use Sun Gridengine to submit jobs instead of running them
# directly on the machine. If unset, no attempt will be made to utilize
# gridengine, even if it is running. By default SGE is not utilized.
#FSLPARALLEL=1

# Mail setup for gridengine jobs. See man qsub (-m option) for all possible
# settings. By default no email is sent.
FSLCLUSTER_MAILOPTS="n"

# default queue for job submissions
#FSLCLUSTER_DEFAULT_QUEUE="all.q"

###################################################
####    DO NOT ADD ANYTHING BELOW THIS LINE    ####
###################################################

export FSLDIR POSSUMDIR PATH FSLMULTIFILEQUIT FSLOUTPUTTYPE FSLTCLSH \
       FSLWISH FSLBROWSER FSLLOCKDIR FSLMACHINELIST FSLREMOTECALL


# Configure the linker search path for Debian FSLs internal shared libraries
LD_LIBRARY_PATH=/usr/lib/fsl/5.0${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH

# load user configuration
if [ -f "${HOME}/.fslconf/fsl.sh" ] ; then
"${HOME}/.fslconf/fsl.sh" ;
fi

Как я могу запустить этот скрипт?

2
задан 13 April 2017 в 15:23

1 ответ

Проблема состоит в том, что файл, который Вы получаете, является соединением bashisms/shisms, которые не поддерживаются tcsh, запускающимся тем, как Вы объявляете переменные:

PATH=$( echo $PATH | tr ":" "\n" | grep  -v "/usr/lib/fsl/" | tr -s "\n" ":" | sed  's/:$//') 

Это не работает в tcsh. Необходимо изменить его к:

set PATH = `echo $PATH | tr ":" "\n" | grep  -v "/usr/lib/fsl/" | tr -s "\n" ":" | sed  's/:$//'`

В этом случае, существует два изменения. Необходимо явно сказать, что Вы собираетесь установить переменную с помощью set, и tcsh не поддерживает $(...) подоболочки, необходимо использовать обратные галочки `...`.

кроме того, если.. еще является неправильным, это должно быть:

if (-f "${HOME}/.fslconf/fsl.sh") then
  "${HOME}/.fslconf/fsl.sh" ;
endif

, Который должен сделать это. Полная ссылка может быть найдена в oocities.

, О, забыл добавлять, с тех пор set является явным, Вам не нужен ни один из export VAR. Просто удалите их.

3
ответ дан 2 December 2019 в 03:00

Другие вопросы по тегам:

Похожие вопросы: