我在另一個shellscript內調用shellscript,並且調用的命令有一個命令來刪除一個我不想執行的文件夾,像這樣防止shellcript中的命令在另一個shellcript內執行
$ rm ../temp -rf
有沒有辦法在不改變被調用的腳本內容的情況下執行這個命令?
我在另一個shellscript內調用shellscript,並且調用的命令有一個命令來刪除一個我不想執行的文件夾,像這樣防止shellcript中的命令在另一個shellcript內執行
$ rm ../temp -rf
有沒有辦法在不改變被調用的腳本內容的情況下執行這個命令?
您可以在腳本中定義的別名是這樣的:
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
謝謝,這很簡單! – user2363508 2013-05-08 18:30:31
不客氣。 – piokuc 2013-05-08 18:31:10
默認情況下,別名不會由非交互式shell擴展。您正在調用的腳本不太可能激活了別名擴展。 – chepner 2013-05-08 18:46:25
,它只能在交互的shell,除非你改變與'-s命令shopt在expand_aliases'的默認行爲腳本,另請參閱:http://chiefsandendians.blogspot.co.uk/2010/07/linux-scripts-and-alias.html – piokuc 2013-05-08 18:58:41
如果您無法更改該腳本,那麼您仍然應該能夠複製它並MODI fy it。 – piokuc 2013-05-08 18:59:30