I am new in shells, so I stuck with this kind of question. What is the simplest way to differentiate those commands?
Asked
Active
Viewed 568 times
8
-
6Does this answer your question? [What are the differences between executing shell scripts using "source file.sh", "./file.sh", "sh file.sh", ". ./file.sh"?](https://askubuntu.com/questions/601055/what-are-the-differences-between-executing-shell-scripts-using-source-file-sh) – SwissCodeMen Aug 23 '20 at 21:57
1 Answers
12
for
t.shthe shell will search thePATHin order for a file namedt.shand execute it if it finds itfor
. t.shthe shell will search thePATHin order for a file namedt.shbut source it if it finds it.In the case of the bash shell, the search behavior for sourced commands has additional considerations, as noted in
man bash:
When bash is not in posix mode, the current directory is searched if no file is found in PATH. If the sourcepath option to the shopt builtin command is turned off, the PATH is not searched.
for
/t.shthe shell will look for filet.shin the filesystem root directory/and attempt to execute itfor
./t.shthe shell will look for filet.shin the shell's current working directory.and attempt to execute it
See also
steeldriver
- 131,985
- 21
- 239
- 326
-
It may be worth mentioning that bash's built-in `.` behaves differently in that it looks for files in the working directory if no files were found in `PATH`. – danzel Aug 23 '20 at 23:22
-
it might be worth also noting that for security reasons the current directory is frequently not in PATH, so one might have to do ./t.sh instead of t.sh frequently. – Gnudiff Aug 24 '20 at 07:25