我安装的是 Ubuntu 20.04。我似乎无法使用 来获取文件sh,这是 Ubuntu 的默认设置dash。
我有一个文件,build.env其中包含一些环境变量,如下所示:
构建环境:
SOMEVAR=something
A_VAR=some_value
Run Code Online (Sandbox Code Playgroud)
. build.env我可以使用或在 bash 上获取它source build.env。但是,如果我尝试. build.env使用 sh,我会得到
sh: 1: .: build.env: not found.
Run Code Online (Sandbox Code Playgroud)
我可以stat或cat该文件,但我无法获取它的来源。为什么?
.(dot) 命令是POSIX所必需的,它应该在sh. 你得到的错误
Run Code Online (Sandbox Code Playgroud).: build.env: not found.
确实来自.. 就是build.env那个没找到。
这是因为您sh遵循规范:
如果file不包含 <slash>,shell 将使用 指定的搜索路径来查找包含file
PATH的目录。
在您的情况下build.env,您的PATH. 你需要
. ./build.env
Run Code Online (Sandbox Code Playgroud)
到build.env驻留在当前工作目录中的源。
笔记:
.Bash 中的 (builtin) 的行为就像PATH包含.在末尾(当前工作目录)一样。这意味着. build.env实际上可以在 Bash 中工作。也许这就是您期望它在sh.source.cat build.env(或stat build.env等)不同于. build.env因为cat不用于PATH定位build.env. 因为它build.env意味着./build.env。| 归档时间: |
|
| 查看次数: |
1791 次 |
| 最近记录: |