Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Sat, 5 Mar 2005 09:46:19 -0500 (EST) From: Igor Pechtchanski Reply-To: cygwin AT cygwin DOT com To: Dave cc: cygwin AT cygwin DOT com Subject: Re: chere doesn't cd to directory In-Reply-To: <20050305092537.10862.qmail@web53404.mail.yahoo.com> Message-ID: References: <20050305092537 DOT 10862 DOT qmail AT web53404 DOT mail DOT yahoo DOT com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sat, 5 Mar 2005, Dave wrote: > --- Igor Pechtchanski wrote: > > > On Fri, 4 Mar 2005, Dave wrote: > > > The cd occurs in /etc/profile for bash, ash, and pdksh; /etc/zprofile > > > for zsh; /etc/csh.login for tcsh. > > > I don't recall if this was part of the discussion, but any particular > > reason you're not doing this in a /etc/profile.d script instead? That > > way, it would work even with a custom /etc/profile. > > I honestly hadn't thought of that... and I don't recall it being > mentioned. > > The issue is that chere wants to stop the standard login script from > doing the usual cd $(HOME). The profile.d scripts get run before the cd, > and hence th cd happens anyway. If the order were changed, we'd have > lost the directory we wanted anyway. That's true. However, bash, for example, remember the previous directory that they were in at the shell level. I just tried, and a newly-started bash shell, when issued a "cd -", will go into /usr/bin. If I add a /etc/profile.d/test.sh that does "cd /var", the newly-started bash will go to /var on "cd -". FWIW, tcsh supports this too (just tried). I don't see off-hand how this could be utilized, but it looks promising. I hadn't tried zsh -- Peter? If the "cd $HOME" were moved earlier, you could have a standard (part of base-files) /etc/profile.d script that is executed last (zzsomething.{c,}sh) that does a "cd -" if some variable is set. Then the CHere package could add a yysomething.{c,}sh that simply sets that variable... > The 'cd $(HOME)' could be removed from /etc/profile, but then the > profile.d script would be required even when chere were not installed. Another alternative is to wrap /etc/profile in another script and use bash's --noprofile and --rcfile options (again, don't recall if this has been discussed before). > Also, tcsh reads the profile.d scripts from csh.cshrc rather than > csh.login. So a non login tcsh shell would also run the snippet (and cd > $(HOME)). Ah, this one's easy to solve. Just unset the variable after you do the first "cd $(HOME)". :-) Then subsequent invocations will skip the snippet. > That said, profile.d seems to be a good place for other generic startup > that is done by base-files, since all the shells run them. Yeah, except for the 'alias' problem (ash doesn't support it, and it's used in 'mc.sh', so every invocation of a login /bin/sh results in an "alias: not found" message). Igor -- http://cs.nyu.edu/~pechtcha/ |\ _,,,---,,_ pechtcha AT cs DOT nyu DOT edu ZZZzz /,`.-'`' -. ;-;;,_ igor AT watson DOT ibm DOT com |,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski, Ph.D. '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! "The Sun will pass between the Earth and the Moon tonight for a total Lunar eclipse..." -- WCBS Radio Newsbrief, Oct 27 2004, 12:01 pm EDT -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/