我需要设置环境变量,通常我们这样做

source script.sh

但是现在,我在启动过程中将其自动化,默认情况下它看起来像 root 启动,shell 为 sh。如何在 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 将引用同一个文件 - 具有相同的实际路径 - 即使没有链接,符号或硬链接(hard link),也起作用(0x251812231343141 也是如此)。

关于bash - 替换 sh 中的源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4732200/

10-13 05:49