Thanks John!
My comments below.
Joe
John Fischer wrote:
> Joe,
>
> Thanks!!
>
> John
>
> Joseph J. VLcek wrote:
>> Hey John,
>>
>> usr/src/cmd/installadm/installadm_util.c
>> Still have the PATH setting logic. Can't this go away now?
>
> Yes. But... I wanted to be certain that should the function
> (installadm_system()) be used in another way (i.e., not to fork
> one of the scripts) that we got the correct PATH in that case
> as well. Am I being overly cautious?
Hum... I see your logic but I think it is not necessary.
>
>>
>> All the scripts have:
>> PATH=/usr/bin:/usr/sbin:/sbin:/usr/lib/installadm:${PATH}; export PATH
>>
>> I don't think you what the ${PATH}.
>>
>> I think it should be:
>>
>> #
>> # Establish PATH for non-built in commands
>> #
>> export PATH=/usr/bin:/usr/sbin:/sbin:/usr/lib/installadm
>>
>
> I will drop the $PATH.
>
>> Joe
>>
>>
>>
>> John Fischer wrote:
>>> Joe,
>>>
>>> Thanks for your help and patience.
>>>
>>> I have finally updated the webrev for this bug. I now have the
>>> scripts setting the PATH appropriately. The scripts now contain
>>> the line:
>>>
>>> PATH=/usr/bin:/usr/sbin:/sbin:/usr/lib/installadm:${PATH}; export PATH
>>>
>>> The new webrev is located at:
>>>
>>> http://cr.opensolaris.org/~johnfisc/path-7325/
>>>
>>> Thanks,
>>>
>>> John
>>>
>>> Joseph J. VLcek wrote:
>>>> John Fischer wrote:
>>>>> Joe,
>>>>>
>>>>> Thanks for taking the time to review the webrev.
>>>>>
>>>>> It is fairly simple to add the path this way. I think that the
>>>>> best thing to do is have a standard of how the underlying scripts
>>>>> are written. I am bent towards always full qualifying every
>>>>> command from my security days in the desktop.
>>>>>
>>>>> If the scripts will be used directly from the command line or if
>>>>> another fork/exec mechanism is developed within the installadm
>>>>> command
>>>>> then you are absolutely correct in saying that there will be
>>>>> additional
>>>>> problems.
>>>>>
>>>>> Looking at the scripts I see the following:
>>>>>
>>>>> 1) VARIABLE=<some binary>
>>>>> ...
>>>>> $VARIABLE ...
>>>>>
>>>>> i.e., GREP=/usr/bin/grep
>>>>> $GREP "something" /etc/hosts
>>>>>
>>>>> 2) <some binary> # No PATH set
>>>>>
>>>>> i.e., grep "something" /etc/hosts
>>>>>
>>>>> 3) <some binary> # PATH set
>>>>>
>>>>> i.e., PATH=/usr/bin:/usr/sbin:/sbin:$PATH
>>>>> grep "something" /etc/hosts
>>>>>
>>>>> 4) <fully path-ed binary>
>>>>>
>>>>> i.e., /usr/bin/grep "something" /etc/hosts
>>>>>
>>>>> The problem is that I see all 4 of these being used within the
>>>>> scripts (actually sometimes all 4 in the same script) which is
>>>>> probably from different developer's styles.
>>>>>
>>>>> Adding the PATH to all the scripts is also a simple solution and
>>>>> could become the standard way we write scripts within the
>>>>> component.
>>>>>
>>>>> Are you recommending that I modify the solution to add PATH to
>>>>> each of the scripts?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> John
>>>>>
>>>>> Joseph J. VLcek wrote:
>>>>>> John Fischer wrote:
>>>>>>> All,
>>>>>>>
>>>>>>> Fairly straight forward fix to a PATH issue. Low hanging fruit
>>>>>>> for the
>>>>>>> new guy. More exciting things to come next week. ;-)
>>>>>>>
>>>>>>> webrev:
>>>>>>>
>>>>>>> http://cr.opensolaris.org/~johnfisc/path-7325/
>>>>>>>
>>>>>>> Open Solaris defect:
>>>>>>>
>>>>>>> 7325 - installadm script should set PATH
>>>>>>>
>>>>>>> The fix is to use putenv() of a sensible path which is /usr/bin,
>>>>>>> /usr/sbin and /usr/lib/installadm. Only set once for the process
>>>>>>> via an initialize variable.
>>>>>>>
>>>>>>> When someone has a chance I would appreciate a review.
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> John
>>>>>>> _______________________________________________
>>>>>>> caiman-discuss mailing list
>>>>>>> caiman-discuss at opensolaris.org
>>>>>>> http://mail.opensolaris.org/mailman/listinfo/caiman-discuss
>>>>>> John,
>>>>>>
>>>>>> I think having the installadm_system() function in
>>>>>> usr/src/cmd/installadm/installadm_util.c export a PATH is an
>>>>>> simple and elegant solution. However I think it might be safer in
>>>>>> the long run to have each script define PATH.
>>>>>>
>>>>>> This would make each script more robust and able to stand on it's
>>>>>> own without the requirement it be invoked by installadm_system().
>>>>>>
>>>>>> My concern is what happens if in the future a code change is made
>>>>>> to have the scripts no longer invoked by installadm_system().
>>>>>>
>>>>>> What do you think?
>>>>>>
>>>>>> Joe
>>>>>>
>>>>>>
>>>>>> installadm_system
>>>>>>
>>>> Hey John,
>>>>
>>>> Yes I would suggest adding PATH to each script.
>>>>
>>>> There is already a standard but as you point out it hasn't alway
>>>> been followed.
>>>>
>>>> The standard can be seen here:
>>>> http://hub.opensolaris.org/bin/view/Community+Group+on/shellstyle
>>>>
>>>> Which describes: There are two acceptable ways to do this:
>>>> (1) make *all* command references in your script use explicit
>>>> pathnames or (2) explicitly reset $PATH in your script.
>>>>
>>>> This is also documented here:
>>>> http://installzone-wiki.central.sun.com/wiki/index.php/Ksh93_Tips
>>>>
>>>> and here:
>>>> http://hub.opensolaris.org/bin/view/Project+shell/shellstyle#always_set_path
>>>>
>>>>
>>>>
>>>> As you point out, it is true that our scripts don't always follow
>>>> this and sometimes mix methods. However I think when possible we
>>>> should try to have our code adhere to this method. Which would lead
>>>> us to have PATH defined in each script or alway use full path names.
>>>>
>>>> Some scripts indirectly use full path names with the CMD=<full
>>>> path>; $CMD method.
>>>>
>>>> Joe
>>>>
>>>>
>>