Pipe

為什麼使用管道’|‘終止第二個程序,有沒有辦法阻止它?

  • June 25, 2017

只是為了提供一些上下文,我正在嘗試執行此命令

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

引用自:https://unix.stackexchange.com/questions/228774