bashubuntupathenvironment-variables.profile

Why do I have to type source env.sh before I can use a geophysical processing software called Madagascar?


I recently installed a geophysical processing software called Madagascar in Ubuntu 1904. The installation of the program was smooth and I didn't encounter any problems. The problem is that in order to used any program of Madagascar I need to be in Madagascar directory. And before any thing have to type source env.sh to enable environment variables for Madagascar. I have tried to add following line both in .bashrc and .profile but still I need to be Madagascar directory and before anything else need to type source env.sh to run the programs.

shah@vbox:~$ echo 'export PATH=$PATH:/home/shah/madagascar-2.0/env.sh' >> ~/.bashrc

shah@vbox:~$ echo 'export PATH=$PATH:/home/shah/madagascar-2.0/env.sh' >> ~/.profile

shah@vbox:~$ source env.sh 

bash: env.sh: No such file or directory

shah@vbox:~$ sfpen

sfpen: command not found 

shah@vbox:~$ cd madagascar-2.0/ 

shah@vbox:~/madagascar-2.0$ source env.sh

shah@vbox:~/madagascar-2.0$ sfpen

NAME

 sfoglpen

DESCRIPTION

vplot filter for OpenGL.

SYNOPSIS

 sfoglpen colormask= red= green= blue= aspect= ppi= stretchy=n aalias=n   aawidth=1 mono=n endpause= cachepipe= shade= wantras= window= frame= overlay= invras= txsquare= serifs= background= redpow=1.0 greenpow=1.0 bluepow=1.0 dither= greyc=1.0 pixc=1.0 txfont= txprec= txovly= xcenter= ycenter= patternmult=1. pause=0 fatmult= rotate=0 txscale=1.0 mkscale=1.0 dashscale=1.0 scale=1.0 xscale=1.0 yscale=1.0 xshift=0. yshift=0. xwmax= ywmax= xwmin= ywmin= fat=0 bgcolor= erase= break= interact= style= size=

Can someone please help me how to properly add path for this program so that I can use Madagascar from any directory. Regards


Solution

  • You should take out the changes you made (they are both superfluous and erroneous) and instead simply add

    source $HOME/madagascar-2.0/env.sh
    

    to the end of one of your shell's interactive startup files. Which one depends on how exactly your Bash is configured, but if you have a .bash_profile, try that, or else maybe .bashrc.

    In some more detail, Bash reads different startup files depending on whether the shell is a login shell and/or an interactive shell. Ideally this should be done in an interactive login shell - login because you only want to do it once (subshells would hopefully inherit these settings) and interactive because you only want and need to run this in an interactive session. But again, what exactly will work will also depend on what exactly env.sh contains.

    Your PATH should not contain env.sh because it should contain directories, not file names; and presumably env.sh takes care of actually updating the PATH. Your shell's configuration almost certainly already contains export PATH so there is no need to do that again (multiple times!) either.