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

时间:2019-03-26 06:33:58

标签: bash android-source

使用以下命令构建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 个答案:

答案 0 :(得分:3)

它执行命令

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

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

答案 1 :(得分:1)

再试一次:

try(FileInputStream fis=new FileInputStream("src/main/resources/users.properties")){
    Properties users=new Properties();
     users.load(fis);
     System.out.println(users);
    }catch(IOException ioe) {
        ioe.printStackTrace();
    }
}

好的,但是:

VAR=123
VAR=456 echo $VAR
123

POSIX变量VAR=456 /bin/sh -c 'echo $VAR' 456

$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 ,因为android根本不需要它们。