Мой Perl-скрипт захватывает переменные окружения из "другого места"? - PullRequest
2 голосов
/ 28 мая 2010

На коробке Solaris в «таинственной производственной системе» я запускаю сценарий Perl, который ссылается на переменную среды. Ничего страшного.

Я ожидаю, что содержимое этой переменной из оболочки до и после выполнения.

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

К сожалению, я действительно не могу вставить код. Я пытаюсь заполучить атомное дело, но я нахожусь здесь в конце.

Ответы [ 4 ]

2 голосов
/ 28 мая 2010

Возможно ли, что ваш скрипт или какие-либо библиотеки, которые вы "используете", связываются с хешем% ENV?

1 голос
/ 28 мая 2010

Можете ли вы запустить код через отладчик Perl, чтобы увидеть, куда он идет? Можете ли вы сбросить pid ($$), чтобы проверить, разветвляется ли он или вызывает подоболочки?

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

0 голосов
/ 01 июля 2010

Хорошо, вот что происходит:

Сам Perl был полностью красной сельдью.

Сценарий выполнялся в дочерней оболочке, которая при создании перезагружала rc-файлы.,Эти rc-файлы уничтожали переменные окружения, которые я вручную добавил во время родительской оболочки с помощью эталонных копий.

Я смог продемонстрировать это с помощью простого сценария csh, который просто повторял, только повторял среду.

Удаление вон моих файлов rc (которые были перезаписаны с wonkitude) очистило мистическую замену.

ОБНОВЛЕНИЕ: Тест, который доказал, что это был "test.sh", который имел простую команду "set".Это доказало, что вложенная оболочка неправильно наследовала родительскую среду.Как ни странно, когда я переключил свою родительскую интерактивную оболочку на ksh, среда начала наследоваться правильно.

0 голосов
/ 28 мая 2010

1) Какая версия Perl?

2) Я полагаю, что некоторые переменные окружения могут быть забиты дочерними процессами. Вы можете сделать PS?

...