В /etc/profile написано: for f in /etc/profile.d/*.sh; do if [ -f "$f" -a -r "$f" -a -x "$f" -a -s "$f" -a ! -L "$f" ]; then . "$f" &> /tmp/fff fi done В результате симлинки пропускаются, что сказывается, например, на фукционировании /etc/profile.d/j2se.sh. Фрагмент из переписки в sisyphus@ : On Monday 10 July 2006 14:14, Eugene Prokopiev wrote: >> Теперь главный вопрос: как сделать, чтоб после логина пользователя >> он видел бы в переменной JAVA_HOME /usr/lib/j2se1.5-sun. [ skiped ] >> if [ -f "$f" -a -r "$f" -a -x "$f" -a -s "$f" -a ! -L "$f" ]; [ skiped ] >> Т.е. выпадают ссылки, ведущие наружу. Вопрос: что делает if в >> profile, делает ли он это правильно (что тогда неправильно?) или >> нет Это из-за условия -a ! -L "$f", что означает "и если $f не ссылка". То есть выпадают все ссылки (не только ведущие наружу). Судя по: >> $ ls -la /etc/profile.d >> -rwxr-xr-x 1 root root 1569 May 18 13:03 0lang.csh >> -rwxr-xr-x 1 root root 1792 May 18 13:03 0lang.sh >> lrwxrwxrwx 1 root root 9 May 18 13:03 lang.csh -> 0lang.csh >> lrwxrwxrwx 1 root root 8 May 18 13:03 lang.sh -> 0lang.sh ...игнорирование ссылок сделано, чтоб повторно не обрабатывать файл, на который там же есть ссылка. Зачем в /etc/profile.d лежат и файлы, и ссылки на них - хз. >> (как тогда исправить?) Проще всего переделать условие на: if [ -f "$f" -a -r "$f" -a -x "$f" -a -s "$f" ] Но не забыть поудалять ссылки, указывающие на файлы, лежащие в том же директории. Или убрать из таких ссылок или из самих файлов расширение .sh
Файл /etc/profile живёт в пакете setup.
Речь идёт об изменении, сделанном в setup-2.2.8: * Wed Aug 17 2005 Dmitry V. Levin <ldv@altlinux> 2.2.8-alt1 - profile,csh.login: disabled sourcing empty files and symbolic links. Смысл игнорирования ссылок в том, чтобы избежать двойного чтения файлов, в частности, оставленного для обеспечения обратной совместимости lang.*sh Полагаю, лучше будет исправить пакет, содержащий файл /etc/profile.d/j2se.sh
дело в том, что: $ ls -l /etc/profile.d/j2se.sh lrwxrwxrwx 1 root root 46 Jul 10 12:21 /etc/profile.d/j2se.sh -> /etc/alternatives/links/|etc|profile.d|j2se.sh $ ls -l "/etc/alternatives/links/|etc|profile.d|j2se.sh" lrwxrwxrwx 1 root root 28 Jul 10 12:21 /etc/alternatives/links/|etc|profile.d|j2se.sh -> /usr/lib/j2se1.5-sun/j2se.sh $ ls -l /usr/lib/j2se1.5-sun/j2se.sh -rwxr-xr-x 1 root root 73 Jul 10 14:59 /usr/lib/j2se1.5-sun/j2se.sh $ rpm -qf /usr/lib/j2se1.5-sun/j2se.sh j2se1.5-sun-devel-1.5.0_07-alt1 как именно вы предлагаете это исправить?
Например, положить в качестве /etc/profile.d/j2se.sh файл, который будет просто включать другой файл.
Apparently WONTFIX.