2013-05-08 29 views
0

我在另一個shellscript內調用shellscript,並且調用的命令有一個命令來刪除一個我不想執行的文件夾,像這樣防止shellcript中的命令在另一個shellcript內執行

$ rm ../temp -rf 

有沒有辦法在不改變被調用的腳本內容的情況下執行這個命令?

+0

,它只能在交互的shell,除非你改變與'-s命令shopt在expand_aliases'的默認行爲腳本,另請參閱:http://chiefsandendians.blogspot.co.uk/2010/07/linux-scripts-and-alias.html – piokuc 2013-05-08 18:58:41

+0

如果您無法更改該腳本,那麼您仍然應該能夠複製它並MODI fy it。 – piokuc 2013-05-08 18:59:30

回答

0

您可以在腳本中定義的別名是這樣的:

alias rm='echo SAFE' 

默認情況下,別名僅在交互式shell工作,所以你必須改變這種行爲:在您的腳本

shopt -s expand_aliases 

和源另一個腳本(你不能改變的):

source the_other_script.sh 

. the_other_script.sh 

這將工作,除非另一個腳本在子shell中運行rm

另一種更安全的方法是創建自己的rm命令,它什麼也不做(或只是打印出它的參數,所以你知道這是怎麼回事),把它放到一個目錄,這個目錄把作爲PATH環境中的第一個像這樣(Korn shell程序語法)變量:也許使用`alias`不是一個好主意

$ export PATH=/path/to/your/dummy/rm/replacement:$PATH 
+0

謝謝,這很簡單! – user2363508 2013-05-08 18:30:31

+0

不客氣。 – piokuc 2013-05-08 18:31:10

+0

默認情況下,別名不會由非交互式shell擴展。您正在調用的腳本不太可能激活了別名擴展。 – chepner 2013-05-08 18:46:25

相關問題