csh-скрипт наследует переменные окружения? - PullRequest
0 голосов
/ 10 марта 2010

Я обнаружил странную проблему при запуске простого сценария csh в Solaris.

#!/bin/csh
echo $LD_LIBRARY_PATH

Давайте назовем этот скрипт test. Когда я запускаю это:

shell> echo $LD_LIBRARY_PATH
shell> /usr/lib:/usr/openwin/lib:/usr/dt/lib:/usr/local/lib:/lib:/my_app/lib
shell> ./test
shell> /usr/lib:/usr/openwin/lib:/usr/dt/lib:/usr/local/lib:/lib

Они выводят совершенно разные значения для $ LD_LIBRARY_PATH. Я не могу понять, почему. (Все нормально на моей машине с Linux)

Спасибо!

Ответы [ 2 ]

1 голос
/ 10 марта 2010

Вы устанавливаете $LD_LIBRARY_PATH в вашем $HOME/.cshrc?

Вы действительно не должны , если вы это сделаете, так как это часто просто ломает программное обеспечение, но изменение первой строки скрипта на #!/bin/csh -f приведет к тому, что ваш скрипт не будет читать .cshrc файлы на начать, защищая вас от других пользователей, которые сделали эту ошибку.

0 голосов
/ 10 марта 2010

Если ваша интерактивная оболочка относится к семейству sh / ksh, возможно, вы установили LD_LIBRARY_PATH, используя «set», но не экспортировали его. В этом случае его новое значение будет установлено как обычная переменная, но не будет экспортировано в среду. Но более вероятно, что ваш скрипт повторно инициализирует переменную.

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

...