在同一行中定义shell变量会传递给(java)进程,但不会在不同的行中

在同一行中定义shell变量会传递给(java)进程,但不会在不同的行中,java,bash,shell,environment-variables,Java,Bash,Shell,Environment Variables,因此,根据,进程不继承shell变量 所以这个过程不应该看到变量A和B: A=X B=Y java -cp blah ... 这一切都是有意义的,直到您看到它们在同一行上定义时被传递: A=X \ B=Y \ java -cp blah ... 这是特定于Java(可能是内部读取命令行)还是所有*nix进程的?将事物转换为单个行将其转换为单个进程调用。换句话说:你基本上是在说:整体评估这个表达式;表达式从这两个定义开始。将事物转换为单个行将其转换为单个进程调用。换句话说:你基本上是在说:整体

因此,根据,进程不继承shell变量

所以这个过程不应该看到变量A和B:

A=X
B=Y
java -cp blah ...
这一切都是有意义的,直到您看到它们在同一行上定义时被传递:

A=X \
B=Y \
java -cp blah ...

这是特定于Java(可能是内部读取命令行)还是所有*nix进程的?

将事物转换为单个行将其转换为单个进程调用。换句话说:你基本上是在说:整体评估这个表达式;表达式从这两个定义开始。

将事物转换为单个行将其转换为单个进程调用。换句话说:你基本上是在说:整体评估这个表达式;表达式从这两个定义开始。

它不是java特有的,而是posix外壳语法规则。 当变量在同一行上时,它的赋值在命令之前。而在不同的行上,子进程只有在导出时才能看到它们

  • [分配在命令名之前]

    [当第一个单词出现时]

    如果令牌不包含字符“=”,则应用规则1。否则,应采用7b

    [不是第一个字]

    如果令牌包含等号字符:

    If it begins with '=', the token WORD shall be returned.
    
    If all the characters preceding '=' form a valid name (see the Base Definitions volume of IEEE Std 1003.1-2001, Section 3.230, Name),
    
    应返回令牌分配\u字。(不能使用带引号的字符。) 参与形成有效名称。)

  • 应按照简单命令的规定分配名称


    它不是特定于java的,而是posix shell语法规则。 当变量在同一行上时,它的赋值在命令之前。而在不同的行上,子进程只有在导出时才能看到它们

  • [分配在命令名之前]

    [当第一个单词出现时]

    如果令牌不包含字符“=”,则应用规则1。否则,应采用7b

    [不是第一个字]

    如果令牌包含等号字符:

    If it begins with '=', the token WORD shall be returned.
    
    If all the characters preceding '=' form a valid name (see the Base Definitions volume of IEEE Std 1003.1-2001, Section 3.230, Name),
    
    应返回令牌分配\u字。(不能使用带引号的字符。) 参与形成有效名称。)

  • 应按照简单命令的规定分配名称


    这是否意味着如果这些命令被放在一个shell脚本中,然后shell脚本本身被执行,那么它应该是正确的?@Aliostad看起来像是其他人更快-|@阿利奥斯塔德。。。谢谢有趣的问题是,这是否意味着如果这些命令放在一个shell脚本中,然后shell脚本本身就被执行了,这应该是正确的呢?@Aliostad看起来像是其他人更快了-|@阿利奥斯塔德。。。谢谢有趣的问题显然是更好的答案。由于我今天接近每日极限,我倾向于保持我的;至少今天;-)@nahuel fouilleul那么,如果在调用可执行文件之前或之后定义它,会有区别吗?显然,这是更好的答案。由于我今天接近每日极限,我倾向于保持我的;至少今天;-)@nahuel fouilleul那么,如果在调用可执行文件之前或之后定义它,会有区别吗?