This is the mail archive of the cygwin@cygwin.com 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: Bash shell extension ?


Andrew DeFaria wrote:

> Donald MacVicar wrote:
>
>>>> surely you could just have @="rxvt -ls -e bash -c \"cd '%1'; exec 
>>>> bash --login\"" and then all the startup scripts would be run 
>>>> properly? 
>>>
>>> Nope! Because --login runs /etc/profile and /etc/profile cd's to $HOME!
>>
>> Realised that about 10 secs after I sent the mail. 
>
> I know how that goes! :-)
>
>> how about put the --login on the first bash - i.e. txvt -ls -e bash 
>> --login -c ......  Just tried that and it seems to wok.
>
> Perhaps. Actually I'm a big advocate of putting options in 
> ~/.Xdefaults to make the command line for things like rxvt a lot 
> shorter. I already have loginShell set to true there so the -ls is 
> irrelevent in my situation.
>
> Actually does anybody know how to make this run minimized by default? 
> I say that because there is that annoying, flashing window that 
> Windows apparenlty runs cmd in to execute the contents of the command 
> key here. My workaround for this, WRT shortcuts say on the desktop, is 
> to preceed this already long command with "cmd /c start /b..." but 
> then set the shortcut to run minimized. So instead of a large flashing 
> cmd window there's a momentary blip in the taskbar that is quickly 
> replaced with the rxvt entry. BTW the /c is equivalent to -c and 
> start's /b option says don't open a cmd window for this command.

Actual experiementation shows me that both are needed! you need --login 
on the first bash so that /etc/profile gets executed. The -c then 
executes putting you in the right directory. The "; exec bash" is needed 
so that the -c command doesn't complete. If it did then bash would exit 
and you'd just have a flicker on the screen. In this new exec'ed bash 
there has been no indication to bash that you want any start up scripts 
to be processed. Putting --login on the second exec'ed bash gets you 
back to the same problem since /etc/profile does a cd "$HOME". Yet 
without any startup scripts running your enviornment is less than ideal. 
So you need -rcfile ~/.bash_login on the second, exec'ed bash so run 
your rcfile.

To recap, for bare bones Windows window execution you need:

bash --login -c "cd '%1'; exec bash -rcfile ~/.bash_login"

For an rxvt window do:

rxvt -e bash --login -c "cd '%1'; exec bash -rcfile ~/.bash_login"




--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


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