問題:
Linux シェル組み込みコマンドを実行しようとすると、 exec.Command を使用する Go プログラムからの「command」など、プログラムは失敗し、次のことを示すエラーが表示されます。実行可能ファイルがシステム パスに見つかりません。
解決策:
1. exec.LookPath の使用:
組み込みコマンドを実行するための Go のネイティブ アプローチの 1 つは、exec.LookPath 関数を使用することです。この関数は、指定されたコマンドをシステムで検索し、存在する場合はそのパスを返します。このメソッドを使用するには、まず exec.LookPath を使用してコマンドを見つけ、次に exec.Command を使用して必要な引数とともに実行します。
例:
path, err := exec.LookPath("command") if err != nil { return fmt.Errorf("command not found: %w", err) } exec.Command(path, "-v", "foo")
2.システムコールの使用:
または、システム バイナリを使用してシェル コマンドを実行することもできます。次の例では、「-v」オプションと「foo」引数を指定して「command」コマンドを実行します。
exec.Command("system", "-c", "command -v foo")
3.シェル経由での実行:
必要に応じて、以下に示すようにシェルのパスを先頭に追加することで、シェル経由でコマンドを実行できます。
exec.Command("/bin/bash", "-c", "command -v foo")
注:
要件に基づいて適切な方法を使用することが重要です。ほとんどの場合、組み込みコマンドのネイティブ実行が可能になるため、exec.LookPath の使用が推奨されるアプローチです。ただし、より複雑なシナリオの場合、または他のシステム ツールと接続する場合は、システム バイナリを使用するか、シェル経由で実行する必要がある場合があります。
以上がGo から Linux シェル組み込みコマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。