2番目のプロセスを終了するためにパイプ「|」を使用するのはなぜですか?これを防ぐ方法はありますか?

2番目のプロセスを終了するためにパイプ「|」を使用するのはなぜですか?これを防ぐ方法はありますか?

コンテキストを提供するためにこのコマンドを実行しようとしています。

echo "set hive.execution.engine=tez;" | hive

「set hive.execution.engine...」が Hive 対話型シェルに入ると、Hive は終了します。

ハイブのインタラクティブシェルに残りたいのですが、シェルは終了して通常のLinuxシェルに戻ります。

ベストアンサー1

完了すると、echo入力はhiveファイルの終わりに達してhive終了します。インタラクティブシェルをクリックすると、Ctrl-D同じ効果が得られます。以下を試してください。

(echo "set hive.execution.engine=tez;" ; cat ) | hive

ただし、対話型シェルのカーソル移動やその他の便利な機能が失われる可能性があります。

編集する:より良いアプローチはコマンドsetです~/.hivercハイブ文書

おすすめ記事