1
我們可以在常規命令上使用stdbuf,例如如何在bash函數上使用stdbuf
stdbuf -o 0 echo aaa
但是我不能在bash函數上使用它,例如,
function tmpf() { echo aaa; }
stdbuf -o 0 tmpf
這是什麼原因?謝謝!
我們可以在常規命令上使用stdbuf,例如如何在bash函數上使用stdbuf
stdbuf -o 0 echo aaa
但是我不能在bash函數上使用它,例如,
function tmpf() { echo aaa; }
stdbuf -o 0 tmpf
這是什麼原因?謝謝!
原因是bash函數是bash會話的內部函數。 stdbuf
和這樣的實用程序是單獨的程序,無法訪問shell會話,並且確實沒有任何bash知識。所以它只能運行可執行文件。
因爲bash有一些技巧了它的袖子,你可以出口一個bash的功能 - 就像導出環境變量 - 這將使得函數訪問bash的過程中孩子們跑。所以,你可以這樣做:
function tmpf() { echo aaa; }
export -f tmpf
stdbuf -o 0 bash -c 'tmpf'
但即使在那裏,你需要得到stdbuf
,以便調用函數執行一個孩子bash
。