I have my bash_profile environment setting as follows:

if [ `hostname` = "devoraebs01" ]; then
   echo `hostname -f`
   . /appl_top/deverp/appl/APPSDEVERP_devoraebs01.env

When I log into this host, it echoes the hostname correctly. But I've noticed that when I try to execute some shell script, I get errors until I run the ". /appl_top/deverp/appl/APPSDEVERP_devoraebs01.env" manually.

Nothing appears to be incorrect with the syntax. Any idea why this isn't getting set correctly at my initial login?

Here's the entire contents of . /appl_top/deverp/appl/APPSDEVERP_devoraebs01.env:

if [ -f $customfile ]; then 
   . /appl_top/deverp/appl/customDEVERP_devoraebs01.env 
   . /db/u01/conf_top/DEVERP_devoraebs01/8.0.6/DEVERP_devoraebs01.env  
   . /appl_top/deverp/appl/DEVERP_devoraebs01.env

I am logging into the host via PuTTY.

  • if [ `hostname` == "devoraebs01" ]; ? – taliezin Mar 12 '15 at 14:34
  • I don't think that's the fix. If it were, then my echo hostname -f would not run at login. But it does. – Andrew Hummel Mar 12 '15 at 14:38
  • 1
    Does the env file do an export of certain variables or a set? – rahul Mar 12 '15 at 14:57
  • 1
    Please edit your question and i) add the contents of /appl_top/deverp/appl/APPSDEVERP_devoraebs01.env (or, even better, just give us a minimal example that reproduces the problem) ii) explain how you log into the host since that changes what files are read at login. – terdon Mar 12 '15 at 14:58
  • 1
    Thanks for the edit. However, what we need to see is what is actually being sourced. You showed us a file whose job is to just source another file. This is a pretty complex setup. Could you give us a minimal example? You could try adding foo="bar" to one of these files and checking whether echo $foo prints bar. Basically, you need to get to the simplest scenario that still reproduces your issue. Otherwise, we can't really help debug, not if we need to deal with 5 or 6 different files. – terdon Mar 12 '15 at 15:51

.bash_profile does not get executed for non-login shells, so if you are running a command and expect it to load in env settings from .bash_profile, that will not happen.

Try creating a .bashrc file instead.

| improve this answer | |
  • So I created a file called .bashrc in my home directory and moved my env settings script into there. Does not appear to run after login. Am I missing something? – Andrew Hummel Mar 13 '15 at 12:51
  • I also added this to my .bash_profile to have it call .bashrc on login. It calles it but still not setting the env variable. – Andrew Hummel Mar 13 '15 at 13:26
  • if [ -f ~/.bashrc ]; then source ~/.bashrc fi – Andrew Hummel Mar 13 '15 at 13:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.