У меня есть сценарий KSH, который экспортирует переменную среды (export SOME_VAR=123)

После запуска скрипта моя текущая оболочка не изменяется и echo $SOME_VAR ничего не выдает.

Я пытался бежать . myScript.ksh но получил следующую ошибку:

.: Доступ запрещен.

Разрешения для . drwxr-xr-x

Любая идея? (Я не root)

1 ответ1

3

В качестве оболочки вы используете tcsh :

  1. у tcsh нету . Команда - единственный source .

    > source myScript.ksh
    

    В оболочках sh, ksh и bash « . » Является встроенной командой, не связанной с "текущим каталогом", использующим « . »

    В csh и tcsh такой встроенной функции не существует (эквивалент называется « source ») и используется . будет пытаться выполнить каталог, следовательно, ошибка "Отказано в доступе".

  2. tcsh является производной от csh и использует совершенно другой синтаксис для установки переменных среды:

    setenv SOME_VAR 123
    

    Это важно, потому что использование ./source заставляет содержимое файла выполняться в текущей оболочке, что означает, что они должны иметь правильный синтаксис tcsh .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .