I came across this example when trying to mount a usb device inside a openvz container and I have never seen the construct in the second line before. Can you explain what it signifies?

. /etc/vz/vz.conf

It's a synonym of the builtin source. It will execute commands from a file in the current shell, as read from help source or help ..

In your case, the file /etc/vz/vz.conf will be executed (very likely, it only contains variable assignments that will be used later in the script). It differs from just executing the file with, e.g., /etc/vz/vz.conf in many ways: the most obvious is that the file doesn't need to be executable; then you will think of running it with bash /etc/vz/vz.conf but this will only execute it in a child process, and the parent script will not see any modifications (e.g., of variables) the child makes.


$ # Create a file testfile that contains a variable assignment:
$ echo "a=hello" > testfile
$ # Check that the variable expands to nothing:
$ echo "$a"

$ # Good. Now execute the file testfile with bash
$ bash testfile
$ # Check that the variable a still expands to nothing:
$ echo "$a"

$ # Now _source_ the file testfile:
$ . testfile
$ # Now check the value of the variable a:
$ echo "$a"

Hope this helps.

  • 16
    Just a note: . will work in most shells (sh, ash, ksh, etc), source is specific for bash. – Dmytro Sirenko Dec 26 '12 at 22:31
  • 4
    @EarlGray source isn't just bash--it's in C-style shells (csh, tcsh)--and zsh too. . works in Bourne-style shells including those listed. Considering that bash is a Bourne-style shell and hardly any bash script of non-trivial complexity is likely to run in a C-style shell, it's true . should be considered much more portable. But bash's source synonym of . exists partly for portability. – Eliah Kagan Oct 8 '14 at 1:14
  • 1
    @EliahKagan yes, you're right; it's better to say that . is universally portable and source is wide-spread, but does not work in plain sh. – Dmytro Sirenko Oct 9 '14 at 11:55

When a script is run using `source' it runs within the existing shell, any variables created or modified by the script will remain available after the script completes.

Syntax . filename [arguments]

  source filename [arguments]

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.