Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replacement for source in sh

I need to set the environment variables, usually we do this by

source script.sh 

But now, I am automating it during the boot process and it looks like the root boots by default with sh shell. How do I source this script in sh?

like image 919
vkris Avatar asked Jan 19 '11 05:01

vkris


Video Answer


1 Answers

The dot command '.' is the equivalent of the C Shell (and Bash) source command. It is specified by POSIX (see dot), and supported by the Bourne and Korn shells (and zsh, I believe).

. somefile 

Note that the shell looks for the file using $PATH, but the file only has to be readable, not executable.

As noted in the comments below, you can of course specify a relative or absolute pathname for the file — any name containing a slash will not be searched for using $PATH. So:

. /some/where/somefile . some/where/somefile . ./somefile 

could all be used to find somefile if it existed in the three different specified locations (if you could replace . with ls -l and see a file listed).

Pedants of the world unite! Yes, if the current directory is the root directory, then /some/where/somefile and ./some/where/somefile would refer to the same file — with the same real path — even without links, symbolic or hard, playing a role (and so would ../../some/where/somefile).

like image 200
Jonathan Leffler Avatar answered Sep 23 '22 02:09

Jonathan Leffler