This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Unset TMP/TEMP in profile? (was Re: [ANNOUNCEMENT] [1.7] Updated: cygwin-1.7.0-67)


On 1 December 2009 09:15, Corinna Vinschen wrote:
> On Nov 30 20:53, Robert Pendell wrote:
>> On Mon, Nov 30, 2009 at 6:37 PM, Angelo Graziosi wrote:
>> > Robert Pendell wrote:
>> >>
>> >> P.S. - On linux (when I tested) TEMP, TMP, and TMPDIR were not set and
>> >> patch defaulted to /tmp.
>> >
>> > I noticed that too...
>> >
>> > Ken Brown wrote:
>> >>
>> >> That's precisely why I suggested unsetting TEMP and TMP in /etc/profile.
>> >> Then things should work as in linux.
>> >
>> > Indeed. But a question emerges: what does it happen if one starts a Windows
>> > application, which needs TEMP or TMP, from Cygwin?
>> >
>> > For example, GSview (*) can view ps.bz2 or pdf.bz2 files uncompressing them
>> > into $TEMP, so it fails if TEMP is not defined, and
>> >
>> > $ gsview foo.pdf.bz2
>> >
>> > is broken!
>> >
>> > This is only an example of problems which can emerge unsetting TEMP.
>> >
>> > Ciao,
>> > Angelo.
>> >
>>
>> Actually I had thought about that and I found that if you
>> intentionally unset all the variables it defaults back to the system
>> defined one which is dependent on the current user in Windows.
>> Basically what TEMP and TMP is defined to in Windows itself. ÂThis is
>> like the behavior in Linux.
>
> I'm wondering if /etc/profile is actually the right place for unsetting
> TMP and TEMP. ÂWhat about etc/defaults/etc/skel/.bashrc instead? ÂIt
> allows every user simple access to the setting of TMP and TEMP and it
> could be seasoned with a user-visible comment.

Reheating this old thread because the proposed base-files 4.0 makes a
change here.

In the current 3.9-3, TEMP and TMP are unset in ~/.bashrc, as
suggested here by Corinna. Thing is, ~/.bashrc is only sourced for
non-login shells, yet the default console/mintty/rxvt shortcuts all
invoke bash as a login shell. In other words, this change might as
well not have been made as far as the vast majority of users are
concerned.

Now in base-files 4.0, TEMP and TMP are unset in /etc/profile instead,
which is sourced by login shells (but not by non-login shells). I
think this is a problem.

Some (badly written) Windows programs expect TEMP and/or TMP to always
be set to a valid directory and will misbehave when they aren't. But
even those that are written properly by using the Windows
GetTempPath() function will not behave well. That's because
GetTempPath() falls back to "the path specified by the USERPROFILE
environment variable", and not the original temp directory (i.e.
%USERPROFILE%/Local Settings/Temp or some such). This mean that
temporary rubbish will end up in the user's home directory, and if
they're unlucky, stuff might even get overwritten.

Unsetting TMP and TEMP was supposed to address an issue where 'patch'
picks up unwelcome ACLs from the temp directory. However, since no-one
has complained about this even though the fix wasn't actually
effective, and because the cure is worse than the disease, I think TMP
and TEMP should not be unset by default.

Andy

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]