<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>9766</bug_id>
          
          <creation_ts>2006-07-11 08:18:36 +0400</creation_ts>
          <short_desc>Пропуск симлинков при обработке /etc/profile.d</short_desc>
          <delta_ts>2010-05-26 18:15:24 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>setup</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="enp">enp</reporter>
          <assigned_to name="Alexey Gladkov">legion</assigned_to>
          <cc>glebfm</cc>
    
    <cc>ldv</cc>
    
    <cc>legion</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>39092</commentid>
    <comment_count>0</comment_count>
    <who name="enp">enp</who>
    <bug_when>2006-07-11 08:18:38 +0400</bug_when>
    <thetext>В /etc/profile написано:

for f in /etc/profile.d/*.sh; do
         if [ -f &quot;$f&quot; -a -r &quot;$f&quot; -a -x &quot;$f&quot; -a -s &quot;$f&quot; -a ! -L &quot;$f&quot; ]; then
                 . &quot;$f&quot; &amp;&gt; /tmp/fff
         fi
done

В результате симлинки пропускаются, что сказывается, например, на
фукционировании /etc/profile.d/j2se.sh. Фрагмент из переписки в sisyphus@ :

On Monday 10 July 2006 14:14, Eugene Prokopiev wrote:

&gt;&gt; Теперь главный вопрос: как сделать, чтоб после логина пользователя
&gt;&gt; он видел бы в переменной JAVA_HOME /usr/lib/j2se1.5-sun.


[ skiped ]


&gt;&gt;      if [ -f &quot;$f&quot; -a -r &quot;$f&quot; -a -x &quot;$f&quot; -a -s &quot;$f&quot; -a ! -L &quot;$f&quot; ];


[ skiped ]


&gt;&gt; Т.е. выпадают ссылки, ведущие наружу. Вопрос: что делает if в
&gt;&gt; profile, делает ли он это правильно (что тогда неправильно?) или
&gt;&gt; нет


Это из-за условия -a ! -L &quot;$f&quot;, что означает &quot;и если $f не ссылка&quot;. То 
есть выпадают все ссылки (не только ведущие наружу). Судя по:

&gt;&gt; $ ls -la /etc/profile.d
&gt;&gt; -rwxr-xr-x  1 root root 1569 May 18 13:03 0lang.csh
&gt;&gt; -rwxr-xr-x  1 root root 1792 May 18 13:03 0lang.sh
&gt;&gt; lrwxrwxrwx  1 root root    9 May 18 13:03 lang.csh -&gt; 0lang.csh
&gt;&gt; lrwxrwxrwx  1 root root    8 May 18 13:03 lang.sh -&gt; 0lang.sh


...игнорирование ссылок сделано, чтоб повторно не обрабатывать файл, 
на который там же есть ссылка. Зачем в /etc/profile.d лежат и файлы, 
и ссылки на них - хз.


&gt;&gt;  (как тогда исправить?)

Проще всего переделать условие на:
    if [ -f &quot;$f&quot; -a -r &quot;$f&quot; -a -x &quot;$f&quot; -a -s &quot;$f&quot; ]

Но не забыть поудалять ссылки, указывающие на файлы, лежащие в том же 
директории. Или убрать из таких ссылок или из самих файлов 
расширение .sh</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39117</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2006-07-12 02:07:07 +0400</bug_when>
    <thetext>Файл /etc/profile живёт в пакете setup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39118</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2006-07-12 02:15:13 +0400</bug_when>
    <thetext>Речь идёт об изменении, сделанном в setup-2.2.8:

* Wed Aug 17 2005 Dmitry V. Levin &lt;ldv@altlinux&gt; 2.2.8-alt1
- profile,csh.login: disabled sourcing empty files and symbolic links.

Смысл игнорирования ссылок в том, чтобы избежать двойного чтения файлов, в
частности, оставленного для обеспечения обратной совместимости lang.*sh

Полагаю, лучше будет исправить пакет, содержащий файл /etc/profile.d/j2se.sh</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>39121</commentid>
    <comment_count>3</comment_count>
    <who name="enp">enp</who>
    <bug_when>2006-07-12 08:44:29 +0400</bug_when>
    <thetext>дело в том, что:

$ ls -l /etc/profile.d/j2se.sh
lrwxrwxrwx 1 root root 46 Jul 10 12:21 /etc/profile.d/j2se.sh -&gt;
/etc/alternatives/links/|etc|profile.d|j2se.sh
$ ls -l &quot;/etc/alternatives/links/|etc|profile.d|j2se.sh&quot;
lrwxrwxrwx 1 root root 28 Jul 10 12:21
/etc/alternatives/links/|etc|profile.d|j2se.sh -&gt; /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

как именно вы предлагаете это исправить?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42699</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2006-12-04 00:24:47 +0300</bug_when>
    <thetext>Например, положить в качестве /etc/profile.d/j2se.sh файл, который будет просто
включать другой файл.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109463</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2010-05-26 18:15:24 +0400</bug_when>
    <thetext>Apparently WONTFIX.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>