Как установить переменную окружения только для одной команды в csh / tcsh

#csh #tcsh

#csh #tcsh

Вопрос:

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

 LD_LIBRARY_PATH=/foo/bar myprogram
  

Могу ли я сделать что-то подобное в csh / tcsh? Я мог бы сделать

 setenv LD_LIBRARY_PATH /foo/bar; myprogram; unsetenv LD_LIBRARY_PATH
  

, но это приведет к потере любого предыдущего значения, которое имела переменная.

Ответ №1:

В csh вы можете либо попробовать env :

 % env LD_LIBRARY_PATH=/foo/bar myprogram
  

или подоболочка:

 % (setenv LD_LIBRARY_PATH /foo/bar; myprogram)
  

Комментарии:

1. Меня сбило с толку отсутствие знака равенства во второй версии. Показывает, что мне нужно внимательно прочитать 😉

2. Первый из них использует внешнюю программу (env), которая не является tcsh, следовательно, вы потеряете свой контекст, такой как псевдонимы. Поэтому я бы предложил использовать вторую.