Назад | Перейти на главную страницу

Почему нельзя добавить определенную переменную среды в мой профиль bash?

У меня проблема с запуском PHP-проекта Phing с Cygwin. Это не большая проблема, потому что я могу заставить это работать, но я ищу причину или решение, чтобы сделать это по-другому.

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

Сначала мне пришлось добавить 4 переменных.

PHP_COMMAND = /cygdrive/e/Server/php/php.exe
PHING_HOME = E:\Server\phing
PHP_CLASSPATH = E:\Server\phing\classes
PATH : add this to the end ;E:\Server\phing\bin

Я бы предпочел добавить их в свой .bash_profile под cygwin/home/jason/.bash_profile

Теперь я смог успешно добавить 3 из 4 элементов в свой bash_profile

PHP_COMMAND=:/cygdrive/e/Server/php/php.exe
PHP_CLASSPATH=:/cygdrive/e/Server/phing/classes
PATH=${PATH}:/cygdrive/e/Server/phing/bin

а потом мне пришлось еще добавить PHING_HOME=:E:\Server\phing в мои настройки среды Windows

Теперь я не уверен, почему, когда я пытаюсь добавить PHING_HOME путь к моему bash_profile а затем запустить phing внутри cygwin я получаю эту ошибку ...

Could not open input file: /cygdrive/e/Server/phing/bin/phing.php

Пока я держу PHING_HOMEв качестве переменной среды phing работает нормально.

Итак, кто-нибудь знает, почему эта 1 переменная должна быть в переменных среды на панели управления, а не внутри моего файла CYGWIN .bash_profile?

Это странно. Предлагаю добавить

set -x

в верхней части вашего .bash_profile. Это заставит bash распечатать список каждой следующей выполняемой команды. Посмотрев на то, что происходило прямо перед сообщением об ошибке, вы сможете понять, какую команду сбивает PHING_HOME. (После запуска оболочки вы можете снова отключить вывод отладки с помощью set +x.)

Вы экспортируете переменные в свой .profile? В bash вы можете установить переменную в самой оболочке с помощью

VAR=value

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

export VAR

Вы можете объединить эти шаги вместе, если хотите:

export VAR=value