Что означает команда "PWD = / proc / self / cwd another_executable"? - PullRequest
2 голосов
/ 26 марта 2019

При сборке источника 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 /" есть пробел (PWD = / proc / self / cwd) и пробел (не; или &&) bin / clang ++ "? Что это значит, я не думаю, что это допустимо для bash, потому что пробел означает, что следующий текст является параметрами вместо команды.

Другая проблема в том, что такое "/ proc / self / cwd", это стандартный узел proc?

Какой-то эксперимент:

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

Так что это действительно законно, но в чем смысл?

Ответы [ 2 ]

3 голосов
/ 26 марта 2019

Выполняет команду

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

, но при настройке среды для этой команды она устанавливает для переменной среды PWD значение /proc/self/cwd.Обратите внимание, что это влияет только на среду процесса clang++, но не на пространство / переменную пространства сценария оболочки.

1 голос
/ 26 марта 2019

Попробуйте еще раз:

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 не требует их вообще.

...