Answers:
./bla.sh
这里的命令是./bla.sh。这使外壳程序bla.sh在当前目录中查找命名的可执行文件,然后要求内核在与外壳程序不同的过程中将其作为普通程序运行。(无论bla.sh是bash脚本,一个perl还是python一个,还是编译后的二进制文件都没有关系。)
. bla.sh
在这里,该命令是.(aka source),是Shell的内置命令。它使外壳程序bla.sh在系统路径($ PATH)中查找一个文件,并将其内容解释为您键入的内容。所有这些操作都是在与外壳本身相同的过程中完成的(因此可能会影响外壳的内部状态)。
当然,这仅在bla.sh包含用于bashshell的命令(如果您当前正在使用的命令)时才起作用,而不适用于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的)别名(这是标准的)