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: tclsh does not export changes to env to child process


> > On Mon, Jun 29, 2015 at 2:45 PM, Stas Maximov <stas.maximov@gmail.com> wrote:
> > > Hi,
> > >
> > > Tcl shell does not export changes to array variable env:
> > >   http://wiki.tcl.tk/env
> > >
> > > Test script: test_env_export1:
> > > --------- begin ----------
> > > set env(FILENAME) filename_val
> > > puts $env(PATH)
> > > puts [exec /bin/bash -c {echo $PATH}]
> > > puts $env(FILENAME)
> > > puts [exec /bin/bash -c {echo $FILENAME}]
> > > --------- end ----------
> > >
> > > Expect two lines of output "filename_val", receive only one. The bug
> > > affects 'guitool' feature of git-gui.
> > >
> > > cygwin 2.0.4-1
> > > tclsh 8.5
> > >
> > >
> > > Thanks,
> > > Stas.
> On Tue, Jun 30, 2015 at 9:39 AM, Stas Maximov <stas.maximov@gmail.com> wrote:
> > Yakov,
> >
> > Thanks for the reply.
> >
> > Apologies for confusion. 8.5 was version of tcl as reported by
> > tcl_version. Please find below more information. Note that
> > "filename_val" is printed only once -- by tclsh, but the child (bash)
> > does not see environment variable FILENAME.
> >
> > Any specific information that you might want to see?
> >
> > Stas.
> >
> >
> > $ which tclsh
> > /usr/bin/tclsh
> >
> > $ cygcheck.exe -c tcl cygwin
> > Cygwin Package Information
> > Package              Version        Status
> > cygwin               2.0.4-1        OK
> > tcl                  8.5.18-1       OK
> >
> > $ cat test_env_export1.tcl
> > set env(FILENAME) filename_val
> > puts $env(FILENAME)
> > puts [exec /bin/bash -c {echo $FILENAME}]
> > puts $env(EDITOR)
> > puts [exec /bin/bash -c {echo $EDITOR}]
> >
> > $ tclsh test_env_export1.tcl
> > filename_val
> >
> > vim
> > vim
> >
> >
>
On Tue, Jun 30, 2015 at 09:43:27AM -0700, Stas Maximov wrote:
> Interestingly, if environment variable FILENAME was exported when
> tclsh called, the test passes. Tclsh falis to export only new env
> variable. Compare two results:
>
> $ env FILENAME=gaga tclsh test_env_export1.tcl
> filename_val
> filename_val
> vim
> vim
> $ env -u FILENAME tclsh test_env_export1.tcl
> filename_val
>
> vim
> vim
>
>
Years ago I seem to recall a problem with tclsh not exporting amended
environment variables. Looks like it's fixed now though, at least on my Linux
system (sorry it's tclsh 8.6)

> 12:37:18$ env|grep ZXC
> 12:37:31$ tclsh
> % set env(ZXC) hello
> hello
> % puts $env(ZXC)
> hello
> % puts [exec /bin/bash -c {echo $ZXC}]
> hello
> % info vars
> tcl_rcFileName tcl_version argv0 argv tcl_interactive auto_path auto_index env tcl_pkgPath tcl_patchLevel argc tcl_library tcl_platform
> % puts $tcl_patchLevel
> 8.6.1
> % exit

Cheers ... Duncan.

--
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]