Home > database >  What does . mean in bash? (As in ". script.sh")
What does . mean in bash? (As in ". script.sh")

Time:03-17

I am used to running shell scripts with for example

source script.sh

I was surprised to learn recently that this also works

. script.sh

The single dot of course normally indicates the current directory so I am now confused. Can anyone explain this use of .?

CodePudding user response:

Taken from IBM docs: ".(dot) runs a shell script in the current environment and then returns. Normally, the shell runs a command file in a child shell so that changes to the environment by such commands as cd, set, and trap are local to the command file. The . (dot) command circumvents this feature.

If there are slashes in the file name, . (dot) looks for the named file. If there are no slashes . (dot) searches for file in the directories specified in the PATH variable. This may surprise some people when they use dot to run a file in the working directory, but their search rules are not set up to look at the working directory. As a result, the shell does not find the shell file."

CodePudding user response:

. (dot) and source mean the same thing in the bash language.

In fact the (dot) form is the standard form according to the POSIX Shell Specification. The source form is a bash extension, but not a bash invention. (The venerable Berkley C-shell (csh) used to use source rather than ..)

According to the POSIX Shell specification, source is a command name whose meaning is unspecified; see https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html

  •  Tags:  
  • bash
  • Related