1

次の違いを理解しようとしています

アプローチ 1:

  1. bash シェルを起動する
  2. bash シェルでコマンドを入力しますmy_command myargs

アプローチ 2:

  1. bash シェルを起動する
  2. 以下を直接実行my_command myargs | /bin/bash/

コマンドはアプローチ 1 ではパスしますが、アプローチ 2 ではパスしません。両方のアプローチが同等であると考えていました。もちろん、アプローチ1では、my_commandを実行する前にコマンドを実行したり、パス変数を変更したりしていません。アプローチ 2 では、まったく新しいシェルを作成し、コマンドをパイプします。

誰かが違いを説明できますか?$PATH、環境変数などがありませんか? もしそうなら、どうすればエコー/見つけることができますか?

4

1 に答える 1

3

あなたの「アプローチ2」は、出力my_commandbashにパイプします。
と同等です

$(my_command myargs)

代わりにリテラル textをパイプすると、次のように機能します。

echo my_command myargs | /bin/bash/
于 2013-03-11T17:55:58.583 に答える