2016-06-21 4 views
1

Я использую сценарий загрузки от сетевого поставщика, я использую это в RedHat 7.2. Стартовый скрипт устанавливает среду с несколькими переменными, однако я не думаю, что эти переменные настроены правильно.Переменные среды Linux, ссылающиеся на другие переменные

Я добавил сценарий запуска в/etc/environment, и я вижу, что переменные определены и доступны для всех пользователей.

Это пример того, как переменные определены в скрипте:

export V1=/opt/nameofsupplier/sdk/CentOS-RHEL-7-x86_64 
    export V2=${V1}/lib/cam 

Есть еще много, если я пытаюсь это из терминала:

cd $V1 

Он прекрасно работает, однако если я стараюсь:

cd $V2 

я получаю:

base: cd $V1/lib/cam: No such file or directory 

Путь действует, и если я делаю это в оболочке:

export V2=${V1}/lib/cam 
    cd $V2 

Она работает без каких-либо ошибок, как это исправить сценарий?

+0

Вы видите их, если вы проверяете вывод 'env'? Проверить 'env | grep^V' – fedorqui

+0

Да, все они присутствуют. – SPlatten

+0

и какое значение у них есть? Вы видите 'V2 = $ {V1}/lib/cam' или' V2 =/opt/nameofsupplier/sdk/CentOS-RHEL-7-x86_64/lib/cam'? Также проверьте, работает ли 'echo '$ V2" ' – fedorqui

ответ

1

Возможно, вы можете быть прав, подозревая неправильное определение этих переменных. /etc/environment может содержать только определения переменных - он не выполняется как обычный скрипт (см. Его документацию here, в котором говорится: Расширение переменной не работает в/etc/environment.), поэтому переменное расширение V1 в определении V2 происходит. Следовательно, V2 неверно определен.

Попробуйте указать /etc/environment строки в системе /etc/profile (или ее эквивалент в зависимости от оболочки ваших пользователей) или у конкретных пользователей ~/.profile s.

В качестве последнего средства вы можете просто скопировать соответствующие строки /etc/environment в вышеупомянутые скрипты (но это будет затруднять обслуживание).

Вы также можете скорректировать определения в /etc/environment не полагаться на расширение, то есть, как это:

export V2=/opt/nameofsupplier/sdk/CentOS-RHEL-7-x86_64/lib/cam 

(при условии, что там не слишком много из них должны быть исправлены). Но это также будет трудно поддерживать.

+0

В этом была проблема, перемещение содержимого в/etc/profile разрешило эту проблему. – SPlatten

Смежные вопросы