Answers:
./bla.sh
这里的命令是./bla.sh
。这使外壳程序bla.sh
在当前目录中查找命名的可执行文件,然后要求内核在与外壳程序不同的过程中将其作为普通程序运行。(无论bla.sh
是bash
脚本,一个perl
还是python
一个,还是编译后的二进制文件都没有关系。)
. bla.sh
在这里,该命令是.
(aka source
),是Shell的内置命令。它使外壳程序bla.sh
在系统路径($ PATH)中查找一个文件,并将其内容解释为您键入的内容。所有这些操作都是在与外壳本身相同的过程中完成的(因此可能会影响外壳的内部状态)。
当然,这仅在bla.sh
包含用于bash
shell的命令(如果您当前正在使用的命令)时才起作用,而不适用于perl
脚本或其他任何命令。
(这是在解释help .
和help source
也。)
由于.
和./
是完全不同的事物(命令与路径的一部分),因此可以将它们组合在一起-使用. ./bla.sh
将“获取” bla.sh
当前目录中的文件。
通常最好使用该./bla.sh
方法。仅~/.bashrc
,~/.profile
并且此类文件通常是源文件,因为它们应该修改当前环境。
./<cmd>
将<cmd>
在新的(分支的)进程中执行驻留在当前目录中的程序。它必须是可执行的。而且可读性也始于#!
。
. <cmd>
将使您当前的Shell执行<cmd>
驻留在当前 Shell进程中您$PATH
当前目录中的Shell脚本。它必须可读。它是shell命令的别名。source
. <cmd>
将在其中查找程序$PATH
,如果找不到,则它将在当前目录中查找。
. ./cmd
./cmd
使用显式路径(./
-当前目录)执行。并且它不必以开头#!
。
. cmd
-(aka source
)-bash内置命令。通过执行的一个明显区别source
是它可以设置/修改当前shell的环境变量。
source
是.
(仅是bash的)别名(这是标准的)