2014-08-29 66 views
0

這個.bashrc函數在命令行上工作, 它是一個很棒的bash單行文件。replaceInAll腳本工作在cli上但不能作爲.bashrc函數

但將其移入bash配置文件,它停止工作?

replaceInAll(){ find . -name "$1" -print | xargs sed -i 's/$2/$3/g' }

什麼我沒有這個讓賴特?

+1

確定'.bash_profile'其來源爲您的殼呢?它只能用於登錄shell,而不是所有的交互式shell。 – chepner 2014-08-29 13:04:53

+0

我在Linux的盒子裏,所以它的.bashrc,我有一個功能工作正常,例如grepall(){ 查找。 -name「$ 1」| xargs -I%sh -c'echo%; grep「$ 2」%; echo「」'_「$ @」; } – dmc 2014-08-29 13:11:05

+0

如果您的終端仿真器啓動了非登錄交互式shell,那麼您必須在'.bashrc'中定義函數。函數不會被導出,所以你的shell不會從你的初始登錄shell中繼承這個函數。 (然而,您可以嘗試使用'export -f replaceInAll'從'.bash_profile'中導出函數,然後重新登錄以查看該函數是否傳播到其他shell。只需在正確的文件中定義函數就簡單多了,儘管如此。) – chepner 2014-08-29 13:12:53

回答

0

這工作

replaceInAll(){ find . -name "$1" -print | xargs sed -i s/"$2"/"$3"/g }

相關問題