Bash 将命令直接传送到shell可执行文件

Bash 将命令直接传送到shell可执行文件,bash,Bash,我试图理解以下两者之间的区别 方法1: 发射bashshell 在bashshell上键入一个命令myu命令myargs 方法2: 发射bashshell 直接执行以下my_命令myargs |/bin/bash/ 我的命令在进近1中通过,但在进近2中不通过。我认为这两种方法是等效的。当然,在方法1中,在执行_命令之前,我没有执行任何命令/更改路径变量。在方法2中,我只是创建一个全新的shell,并将命令导入其中 有人能解释一下区别吗?是否缺少$PATH、环境变量等?如果是这样,我如何回音/查找

我试图理解以下两者之间的区别

方法1:

  • 发射bashshell
  • 在bashshell上键入一个命令
    myu命令myargs
  • 方法2:

  • 发射bashshell
  • 直接执行以下
    my_命令myargs |/bin/bash/
  • 我的命令在进近1中通过,但在进近2中不通过。我认为这两种方法是等效的。当然,在方法1中,在执行_命令之前,我没有执行任何命令/更改路径变量。在方法2中,我只是创建一个全新的shell,并将命令导入其中

    有人能解释一下区别吗?是否缺少$PATH、环境变量等?如果是这样,我如何回音/查找?

    您的“方法2”将
    my_命令的输出传送到bash。
    相当于

    $(my_command myargs)
    
    如果改为使用管道传输文字,它将起作用:

    echo my_command myargs | /bin/bash/
    

    请注意,您可能仍然会看到差异,因为方法1使用交互式shell,而方法2不使用。通常,您可能观察到的唯一区别是
    my_command
    是别名或shell函数,而非交互式shell中可能未定义该别名或shell函数。