I'd like to source a file inside a tcsh script. In code:


source $1    
echo $LD_LIBRARY_PATH > temp_file

The expected result: The environment variable set by the script using the source command will be printed into a temporary file.

Actual result: The sourced file runs nicely, but the LD_LIBRARY_PATH variable remains empty.

Any ideas on how to get this to work?

P.S. tcsh is of course not my shell of choice, but I have a script at work that sets up numerous environment variables in tcsh that I want to get working in bash. I figured the easiest way (other than rewriting the tcsh shell every time) is to source it, print out the variables into a file, and with a bit of shell magic, re-source everthing back in bash.

  • If you run env before and after source, does anything change? If not, try the same inside the sourced script. That might give some clues.
    – ams
    Apr 12, 2012 at 11:55
  • 2
    I just tried it; it works for me the way you were expecting. Are you sure your sourced script is setting LD_LIBRARY_PATH? You can add a line at the very end (or anywhere the script might exit) that echos it to a different temp file. Apr 12, 2012 at 12:02
  • Post the sourced script (preferably shrunk to a small example that exhibits the problem). Apr 12, 2012 at 23:20

2 Answers 2


I've tried with csh on OpenBSD. I guess my example works also with tcsh.

File test.csh:

source data.csh

File data.csh

setenv VARIABLE 1234


$ csh test.csh

For further reference, this does indeed work, but one should not use the shebang to the tcsh path:


but rather use the path to 'env':

 #!/usr/bin/env tcsh

to allow flexibility on systems with tcsh installed in different paths. For example, if 'tcsh' is installed in '/usr/bin/tcsh' then the former will fail, while the latter will still work.

  • 1
    Please elaborate. Why did this help?
    – Zvika
    Nov 24, 2017 at 10:47

You must log in to answer this question.

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