SETENV: Плохо: модификатор в $ ($)

Я использую терминал tcsh в Linux. В другом терминале, который я обычно использовал, я установил путь к некоторому файлу лицензии следующим образом:

  export PATH="$PATH:$MODEL_TECH"

Оболочка Tcsh не распознает эту команду, поэтому я попробовал следующее:

  setenv PATH "$PATH:$MODEL_TECH"
  set PATH "$PATH:$MODEL_TECH"
  setenv PATH=("$PATH:$MODEL_TECH")

Но тогда я всегда получаю следующую ошибку:

Плохо: модификатор в $ ($).

Что было бы также здорово, если бы кто-нибудь мог мне быстро помочь, перепробовал довольно много комбинаций, но ничего не работает.


person reinhard    schedule 07.03.2011    source источник


Ответы (5)


Бросьте =

setenv LICENSE_FILE "/usr/local/softwarex/license.dat"

Со страницы руководства для tcsh:

   setenv [name [value]]

   Without  arguments, prints the names and values of all environ‐
   ment variables.  Given name, sets the environment variable name
   to value or, without value, to the null string.
person codaddict    schedule 07.03.2011

Поместите фигурные скобки вокруг имен переменных:

setenv PATH ${PATH}:${foo}

или используйте эту форму:

set path = ($path $foo)
person Dennis Williamson    schedule 07.03.2011
comment
Верно. csh/tcsh использует символ : для модификаторов; например, $var:t дает вам корень имени файла $var (путем удаления расширения .whatever). Если вы пишете "$PATH:$MODEL_TECH", оболочка считает, что '$' является частью модификатора для $PATH (которого она не распознает). Фигурные скобки отделяют имя от следующих ':'. Форма set path = ... устанавливает соответствующую переменную оболочки $path, которая привязана к переменной окружения $PATH. man tcsh для получения дополнительной информации. - person Keith Thompson; 31.07.2011
comment
Хотя это и не указано, явная строка также будет работать, например. setenv PATH ${PATH}:/foo/bar - person Samuel Harmer; 19.07.2013


В оболочке tcsh путь или любая переменная среды могут быть добавлены, как показано ниже:

setenv PATH $PATH":$NEWPATH"
person Rams    schedule 14.05.2014

Если это не работает, используйте это:

setenv PATH ${PATH}:/.../../../
person katy    schedule 30.04.2015