This is the mail archive of the
mailing list for the Cygwin project.
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
>>> 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
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