6

I'm trying to use eshell inside emacs, so I don't have to switch between emacs and a terminal. When using bash, I have few bash scripts I usually source to export some env variables (in order to switch between different tool-versions and build-environments). Is it possible to somehow execute my scripts with bash, and put the exports (or some of them) in eshell.

Basically I'm trying to source a bash-script in eshell.

Is there a way to do something like that?

3
  • 1
    This seems to be a common misunderstanding for some reason, but "source" does not mean "set a few variables"; it means (in the context of sh) "execute the commands in this file in the current context". Therefore, the answer to the question "can I source a bash file in a program that uses some other incompatible language?" is no.
    – LaC
    Apr 20, 2011 at 14:56
  • @LaC - You should post your comment as an answer IMO
    – Nifle
    Apr 20, 2011 at 14:59
  • @Nifle - your wish is my command.
    – LaC
    Apr 20, 2011 at 15:01

2 Answers 2

4

I think, I found a way. I've created a my-init.el script with this content:

  bash -c "source my-init.sh > /dev/null && env |                   \
           grep -E 'MY_ENV\=' |                                     \ 
           sed -e 's/\([^=]*\)=\(.*\)/(setenv \"\1\" \"\2\" \)/g'"  \
           > /tmp/my-init-env
  source /tmp/my-init-env

When sourced from within eshell, it will start a bash, source the my-init.sh there (thus setting the MY_ENV variable), and then call env to obtain MY_ENV, and convert it with sed to something like (setenv "MY_VAR" "value") which is than sourced in the original eshell.

Not beautiful, but it does the job!

1
  • I asked a mod to remove the "community wiki" status. Then I upvoted you..
    – Nifle
    Apr 21, 2011 at 12:35
2

This seems to be a common misunderstanding for some reason, but "source" does not mean "set a few variables"; it means (in the context of sh) "execute the commands in this file in the current context". Therefore, the answer to the question "can I source a bash file in a program that uses some other incompatible language?" is no.

1
  • I knew, what sourcing is, but was trying to find a solution/workaround. Anyway, thank you, for your reply!
    – siddhadev
    Apr 20, 2011 at 16:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .