Всем, привет!
Недавно столкнулся со следующей проблемой.
Система FreeBSD 6.2.
Собрал из исходников последнюю версию Qt4, все нормально собралось и работает.
Прописал, как было написано в руководстве пути к бинарникам в файлах ~/.login и ~/.profile
Система пути подцепила и вызовы воспринимает безоговорочно, но только в консольном режиме.
После загрузки KDE, вызов любого из бинарников в терминальном сеансе завершается сообщением об ошибке, что файл не найден.
Из чего я делаю вывод, что KDE получает значение переменной $PATH, откуда-то из другого файла.
Целый день безрезультатно потратил на поиск решения проблемы.
Если кто-нибудь знает в чем злая бед причина, подскажите пожалуйста.С уважением, Алексей.
>[оверквотинг удален]
>Система пути подцепила и вызовы воспринимает безоговорочно, но только в консольном режиме.
>
>После загрузки KDE, вызов любого из бинарников в терминальном сеансе завершается сообщением
>об ошибке, что файл не найден.
>Из чего я делаю вывод, что KDE получает значение переменной $PATH, откуда-то
>из другого файла.
>Целый день безрезультатно потратил на поиск решения проблемы.
>Если кто-нибудь знает в чем злая бед причина, подскажите пожалуйста.
>
>С уважением, Алексей.Покажи фаил ~/.profile и вывод комманды echo $PATH
>[оверквотинг удален]
>>После загрузки KDE, вызов любого из бинарников в терминальном сеансе завершается сообщением
>>об ошибке, что файл не найден.
>>Из чего я делаю вывод, что KDE получает значение переменной $PATH, откуда-то
>>из другого файла.
>>Целый день безрезультатно потратил на поиск решения проблемы.
>>Если кто-нибудь знает в чем злая бед причина, подскажите пожалуйста.
>>
>>С уважением, Алексей.
>
>Покажи фаил ~/.profile и вывод комманды echo $PATHВот строка путей в пользовательском файле profile
# remove /usr/games and /usr/X11R6/bin if you want
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:$HOME/bin:/usr/local/Trolltech/Qt-4.3.4/bin:$PATH export PATHВот результат работы команды echo в режиме пользователя, вызов команды производился в консольном режиме:
/usr/local/Trolltech/Qt-4.3.4/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/manowar/binВот результат работы той же команды, но в KDE:
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/manowar/binА вот результат работы команды echo, тоже из KDE, но в режиме суперпользователя:
/usr/local/Trolltech/Qt-4.3.4/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/root/binВот, такая чехарда.
>[оверквотинг удален]
>/usr/local/Trolltech/Qt-4.3.4/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/manowar/bin
>
>Вот результат работы той же команды, но в KDE:
>/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/manowar/bin
>
>А вот результат работы команды echo, тоже из KDE, но в режиме
>суперпользователя:
>/usr/local/Trolltech/Qt-4.3.4/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/root/bin
>
>Вот, такая чехарда.Все стандартные пути в KDE прописаны. Что за бинарник вы запускаете? Откуда он? попробуйте запустить его указав полный путь.
Пример:
Нужно запустить ls.Чтобы найти где он можно поступит так:
find / -name "ls"
или
(не для Solaris) locate lsУвидите полный путь, допустем это /bin/ls, введите это в коммандной строке
[test:~]$ /bin/lsУбедитесь что работает, Убедитесь что путь присутствует в PATH, если нет RTFM по вашему шеллу. Да кстати какой шелл???
>[оверквотинг удален]
>Чтобы найти где он можно поступит так:
>find / -name "ls"
>или
>(не для Solaris) locate ls
>
>Увидите полный путь, допустем это /bin/ls, введите это в коммандной строке
>[test:~]$ /bin/ls
>
>Убедитесь что работает, Убедитесь что путь присутствует в PATH, если нет RTFM
>по вашему шеллу. Да кстати какой шелл???Запускаю я qmake, который находится в /usr/local/Trolltech/Qt-4.3.4/bin, путь
к нему, как указано выше, прописан и путь этот прекрасно известен системе, т.е. бинарники, находящиеся по данному пути замечательно вызываются,но только в консольном режиме. Шелл - cshell.
Проблема с путями начинается если вызов бинарника производится из терминального режима KDE, если только пользователь не является суперпользователем.
Вчера заметил еще одну особенность, если в косольном режиме запустить Midnight Commander и попытаться запустить qmake из командной строки, тоже выдается сообщение о том, что файл не найден. Стоит выйти из MC, и voi-a-la, путь к /usr/local/Trolltech/Qt-4.3.4/bin снова в пределах видимости.
>[оверквотинг удален]
>Запускаю я qmake, который находится в /usr/local/Trolltech/Qt-4.3.4/bin, путь
>к нему, как указано выше, прописан и путь этот прекрасно известен системе,
>т.е. бинарники, находящиеся по данному пути замечательно вызываются,но только в консольном
>режиме. Шелл - cshell.
>Проблема с путями начинается если вызов бинарника производится из терминального режима KDE,
>если только пользователь не является суперпользователем.
>Вчера заметил еще одну особенность, если в косольном режиме запустить Midnight Commander
>и попытаться запустить qmake из командной строки, тоже выдается сообщение о
>том, что файл не найден. Стоит выйти из MC, и voi-a-la,
>путь к /usr/local/Trolltech/Qt-4.3.4/bin снова в пределах видимости.Ну так Вы это... Ман по csh почитайте, что ли. Там ясно написано, что .login используется единожды при входе в систему. Чтобы КДЕ не терял Ваши пути, пропишите их в .cshrc.
>[оверквотинг удален]
>>Проблема с путями начинается если вызов бинарника производится из терминального режима KDE,
>>если только пользователь не является суперпользователем.
>>Вчера заметил еще одну особенность, если в косольном режиме запустить Midnight Commander
>>и попытаться запустить qmake из командной строки, тоже выдается сообщение о
>>том, что файл не найден. Стоит выйти из MC, и voi-a-la,
>>путь к /usr/local/Trolltech/Qt-4.3.4/bin снова в пределах видимости.
>
>Ну так Вы это... Ман по csh почитайте, что ли. Там ясно
>написано, что .login используется единожды при входе в систему. Чтобы КДЕ
>не терял Ваши пути, пропишите их в .cshrc.О! Вот, то что я и хотел услышать. Коротко и ясно.
Большое спасибо за совет.
Удачи!
Выясните какой шелл у вас запускает эмулятор терминала, потом почитайте доку по этому шеллу и найдите что он исполняет, будучи запущенным как interactive non-logon shell
Ответ был дан еще вчера, пользователем angra, или непонятные слова просто пропускаешь?
Если это sh, то внимательно прочитать третий абзац "Invocation"
A login shell first reads commands from the
files /etc/profile and then .profile if they exist. If the environment
variable ENV is set on entry to a shell, or is set in the .profile of a
login shell, the shell then reads commands from the file named in ENV.
Therefore, _a user should place commands that are to be executed only at
login time in the .profile file_, _and commands that are executed for every
shell inside the ENV file_.Для других шелов так же нужно прочитать ман, а не убивать время тыкаясь в менюшки KDE.