Pipe
為什麼使用管道’|‘終止第二個程序,有沒有辦法阻止它?
只是為了提供一些上下文,我正在嘗試執行此命令
echo "set hive.execution.engine=tez;" | hive
一旦“set hive.execution.engine…”進入 hive 互動式 shell,hive 就會終止,
我希望它留在 hive 互動式 shell 中,但 shell 然後終止,我回到正常的 linux shell。
一旦輸入結束,它就會退出。所以不要結束它:
echo "set hive.execution.engine=tez;" | cat - /dev/tty | hive
您不會失去任何本來不存在的功能。這通過將
cat
’s stdin *(即echo
’s stdout)*與來自終端的輸入連接來工作。這很簡單。cat
只要您從頂級互動式 shell 執行它,這裡的另一個解決方案就會以相同的方式工作。
完成後
echo
,輸入hive
命中文件結尾,因此hive
終止。如果您Ctrl-D
在互動式 shell 中點擊,您可能會得到相同的效果。嘗試以下操作:(echo "set hive.execution.engine=tez;" ; cat ) | hive
但是,您可能會失去互動式 shell 的游標移動和其他不錯的功能。
編輯:更好的方法可能是按照hive 文件
set
放入您的命令。~/.hiverc