我需要设置环境变量,通常我们这样做
source script.sh
但是现在,我在引导过程中将其自动化,并且默认情况下它看起来像 root 引导与sh
shell。如何获取此脚本sh
?
我需要设置环境变量,通常我们这样做
source script.sh
但是现在,我在引导过程中将其自动化,并且默认情况下它看起来像 root 引导与sh
shell。如何获取此脚本sh
?
点命令 ' .
' 等效于 C Shell(和 Bash)source
命令。它由 POSIX 指定(请参阅 参考资料dot
),并受到 Bourne 和 Korn shell 的支持(而且zsh
,我相信)。
. somefile
请注意,shell 使用 查找文件$PATH
,但文件必须是可读的,而不是可执行的。
正如下面评论中所指出的,您当然可以为文件指定相对或绝对路径名 - 任何包含斜杠的名称都不会使用$PATH
. 所以:
. /some/where/somefile
. some/where/somefile
. ./somefile
都可以用来查找somefile
它是否存在于三个不同的指定位置(如果您可以替换.
为ls -l
并查看列出的文件)。
全世界的书呆子联合起来!是的,如果当前目录是根目录,那么/some/where/somefile
和./some/where/somefile
将引用同一个文件——具有相同的真实路径——即使没有链接,无论是符号链接还是硬链接,都在起作用(也会如此../../some/where/somefile
)。
tl;dr使用sh
(而不是bash
)参数必须包含斜杠:source ./script.sh
,而不仅仅是source script.sh
。除非script.sh
可以在PATH
.
点 ( .
) 命令同时存在于bash
和sh
中。此外,bash
将其别名为source
. 从bash
手册:
https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html#index-source
来源
source filename
.
(参见 Bourne Shell Builtins)的同义词。
https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html#index-_002e
. (一段时间)
. filename [arguments]
filename
从当前 shell 上下文中的参数读取并执行命令。如果filename
不包含斜杠,则该PATH
变量用于查找文件名。当 Bash 不在 POSIX 模式下时,如果filename
在$PATH
.
从POSIX:
如果
file
不包含 a/
,shell 将使用 指定的搜索路径PATH
来查找包含文件的目录。然而,与普通命令搜索不同的是,dot 实用程序搜索的文件不必是可执行的。