命令“PWD = / proc / self / cwd another_executable”是什么意思?

问题描述 投票:2回答:2

使用以下命令构建AOSP 9.0.0_r30源时:

$ make clean
$ make showcommands -j8 > ~/BuildAndroid.txt

在〜/ BuildAndoird.txt中有这样的命令行:

[ 58% 62374/106553] PWD=/proc/self/cwd prebuilts/clang/host/linux-x86/clang-4691093/bin/clang++ ........

我想这是一个bash命令,但为什么在“prebuilts / clang / host / linux-x86 / clang-4691093 / bin / clang ++之前有”PWD = / proc / self / cwd“和空格(不是;或&&) “?这是什么意思,我不认为它对bash是合法的,因为空间意味着以下文本是参数而不是命令。

另一个问题是,什么是“/ proc / self / cwd”,是一个标准的proc节点?

一些实验:

$ VAR=123
$ VAR=456 echo $VAR
 123
$ echo $VAR
 123

所以这是合法的,但意义何在?

bash android-source
2个回答
1
投票

再试一次:

VAR=123
VAR=456 echo $VAR
123

好的但是:

VAR=456 /bin/sh -c 'echo $VAR'
456

POSIX变量$PWD

$PWD将指向当前目录

echo $PWD; ls -l /proc/self/cwd
/home/user
lrwxrwxrwx 1 user user 0 mar 26 09:18 /proc/self/cwd -> /home/user

这样做将确保设置$PWD,因为android根本不需要它们。


3
投票

它执行命令

prebuilts/clang/host/linux-x86/clang-4691093/bin/clang++

但是在为此命令设置环境时,它会将环境变量PWD设置为值/proc/self/cwd。请注意,这仅影响clang++进程的环境,而不影响shell脚本的环境/变量空间。

© www.soinside.com 2019 - 2024. All rights reserved.