[Bug: 21.4.18] compile command path not that of login shell

Stephen J. Turnbull stephen at xemacs.org
Mon May 29 01:28:23 EDT 2006


>>>>> "Larry" == Larry Evans <cppljevans at cox-internet.com> writes:

    Larry> Unfortunately, I couldn't get it to send from xemacs;
    Larry> hence, I'm sending from thunderbird.

Thanks for making the effort.  (Do you know why XEmacs couldn't send?
It should just use /usr/sbin/sendmail I think, and it should Just Work[tm].)

    Larry> The PATH is set in ~/.bash_env.  However, I don't
    Larry> understand the question:

    Larry>    Does either one source the other?

I just wanted to know how consistency is being ensured across the
various rc files.  I forgot to mention the possibility of a third file
being sourced.

    Larry> since only one file, .bashrc, was referenced in the above
    Larry> paragraph.

I used a two-paragraph scope, sorry! :-)

    >> What is the PATH that you set, and what is the PATH that you
    >> get from the shell command tool?  (`echo $PATH' should do the
    >> trick.)

    Larry> The PATH set by my ~/.bash_env is:

    Larry> PATH=$HOME/bin:$BJAM_PATH:$INTEL_CXX_base/bin:/usr/local/bin:$COMO_PATH/bin:$PATH
    Larry> PATH=$HOME/prog_dev/d-language/dmd/bin:$PATH

    Larry> and from 'shell command tool', `echo $PATH` shows:

    Larry> cd /home/evansl/
    Larry> echo $PATH
    Larry> /usr/local/bin:/usr/bin:/bin:/usr/bin/X11

This is the typical path given to the X server/xdm (or whatever your X
login manager is).

    Larry> OTOH, as mentioned, from the eshell, I get:

    Larry> [ the expansion of the PATH set in .bash_env ]

In a later post, you wrote

    Larry> I've discovered something else important.  The problems I
    Larry> was reporting did not start from invokation from an xterm.
    Larry> Instead, they started from an icewm menu item.  The code
    Larry> executed when I pressed this item was:

    Larry>      prog    "XEmacs21-nomule" - /bin/sh -c /usr/bin/xemacs21-nomule"

OK, so what appears to be happening is that /bin/sh is getting run in
the environment of icewm, and then that environment is passed to
XEmacs.  I'm surprised the eshell gets it right; it must be doing
something like parsing the output of "$SHELL -i set", and I just missed
it.  M-x shell-mode would run "bash -i", and also "get it right".

    Larry> OTOH, when:

    Larry>      /usr/bin/xemacs21-nomule

    Larry> is executed from a terminal, the problem with PATH
    Larry> disappears.

Right; the terminal is run with bash -i (or maybe even bash --login),
which sources .bashrc and .bash_env.

Please refer to Glynn Clements's post for several options.  There's
one more that occurs to me.  I'm not sure whether it is "elegant and
correct," or if it's a "dangerous hack" (and it's untested).

4.  Change the shell in the IceWM menu to a bash interactive shell
    (/bin/bash -i):

      prog    "XEmacs21-nomule" - /bin/bash -i -c /usr/bin/xemacs21-nomule"

Hope one of these works for you without unwanted side effects!

Regards,
Steve

-- 
School of Systems and Information Engineering http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba                    Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
               Ask not how you can "do" free software business;
              ask what your business can "do for" free software.




More information about the XEmacs-Beta mailing list