आप POSIX 2008 के सभी संस्करणों का HTML संस्करण ऑनलाइन देख सकते हैं:
जिसे 2008 के संस्करण में जोड़ा गया था।
तकनीकी गलियारा आम तौर पर नई सुविधाओं को नहीं जोड़ता है।
आप पिछला संस्करण देख सकते हैं ( http://pubs.opengroup.org/onlinepubs/009695399/utilities/rm.html ) (POSIX 2004) में वह पाठ नहीं था।
मानक के बाद के संशोधन में शामिल करने के लिए नए पाठ को 2003-05-09 आस्टिन समूह सम्मेलन में स्वीकार किया गया था ।
यह मार्च में सन माइक्रोसिस्टम्स के जॉन बेक द्वारा अनुरोध किया गया था कि उसी वर्ष (लिंक को ओपेंगुपर्ग पंजीकरण की आवश्यकता है, यहां एन्हांसमेंट नंबर 5 भी देखें )।
जॉन बेक ने लिखा, मंगल पर 11 मार्च 2003:
@ page 820 line 31681-31683 section rm comment {JTB-1}
Problem:
Defect code : 3. Clarification required
An occasional user mistake, with devastating consequences, is to
write a shell script with a line such as:
rm -rf $VARIABLE1/$VARIABLE2
or
rm -rf /$VARIABLE1
without verifying that either variable is set, which can lead to
rm -rf /
being the resulting command. Since there is no plausible
circumstance under which this is the desired behavior, it seems
reasonable to disallow this. Such a safeguard would, however,
violate the current specification.
Action:
Either extend the exceptions for . and .. on the noted lines
to list / as well, or specify that the behavior of rm if an
operand resolves to / is undefined.
जीएनयू rm
ने 2003-11-09 की प्रतिबद्धताओं में विकल्प --preserve-root
और --no-preserve-root
विकल्प शामिल किए , लेकिन 2006-09-03 की प्रतिबद्धताओं में केवल यही डिफ़ॉल्ट था , इसलिए कोरुटिल्स में 6.2--preserve-root
FreeBSD उस स्लैश को संरक्षित कर रहा है जो 2004-10-04 के बाद से किया गया था ( "यह पता लगाएं कि मेरे अंडरवियर वास्तव में लौ-प्रूफ कैसे है" कमिट लॉग के साथ), लेकिन शुरू में तब नहींPOSIXLY_CORRECT
, जब तक कि एक दशक बाद जांच करने के लिए याद न कर लिया जाए कि POSIX अब था यह इंगित करते हुए कि यह किस बिंदु पर POSIX मोड में भी किया गया था ।
फ्रीबीएसडी प्रारंभिक प्रतिबद्ध उल्लेख सोलारिस उस समय पहले से ही कर रहा था।
@JdePB (नीचे टिप्पणी में) ने पाया कि एक सूर्य अंदरूनी सूत्र की कहानी को लिंक करने और सोलारिस मूल के बारे में अधिक जानकारी देने और सोलिस के सुझाव देने से पहले ही ऑस्टिन समूह से अनुरोध करने से पहले ही उनके पास सुरक्षित जगह थी।
यह उस बहिष्करण को जोड़ने के औचित्य को समझाता है। जबकि कोई केवल अपने आप को दोष दे सकता है यदि वे करते हैं rm -rf /
, तो एक ऐसा मामला है जहां एक स्क्रिप्ट ऐसा कर सकती है अगर वह rm -rf -- "$1/$2"
बिना जांच किए $1
/ $2
जो प्रदान किया गया है जो कि सोलिस पैच (उस लिंक के अनुसार) का दुरुपयोग करते समय कुछ सन ग्राहकों को बुरा लगता है।
को हटाने से मना किया गया था .
और उससे ..
बहुत पहले जोड़ा गया था और फिर से संभावित दुर्घटनाओं के खिलाफ सुरक्षा के लिए। rm
अभी भी एक खतरनाक आदेश है। यह वही करता है जो यह करने के लिए होता है: जो आप इसे बताते हैं उसे हटा दें।
rm -rf /*
cd /tmp && rm -rf .*/ # on some systems where rm -rf ../ still removes
# the content of ../ and shells that still
# may include . and .. in glob expansions.
rm -rf -- "$diretcory"/* # note the misspelled variable name
dir='foo '; rm -rf $dir/*
सब कुछ भी निकाल देंगे। जब आप करते हैं तो शेल फ़ाइलनाम पूर्णता ऐसी समस्याओं का कारण बनती है
rm -rf someth<Tab>/*
इसका विस्तार किया गया:
rm -rf something /*
क्योंकि something
ऐसा हुआ नहीं एक निर्देशिका है।
गोले की तरह tcsh
या zsh
जब कॉल करने के लिए कोशिश कर रहा एक अतिरिक्त शीघ्र जोड़ देगा rm
एक साथ *
वाइल्डकार्ड ( tcsh
डिफ़ॉल्ट रूप से नहीं)।