||This article is written like a manual or guidebook. (December 2012)|
In software engineering, clobbering a file or computer memory is overwriting its contents. The Jargon File defines clobbering as "overwrit[ing], usually unintentionally: 'I walked off the end of the array and clobbered the stack.' Compare mung, scribble, trash, and smash the stack."
Often this happens unintentionally, e.g., using the > redirection operator. To prevent unintentional clobbering, various means are used. For example, the setting shell parameter set -o noclobber (bash, ksh) or set noclobber (csh, tcsh) will prevent > from clobbering by making it issue an error message instead:
$ echo "Hello, world" >file.txt $ echo "This will overwrite the first greeting." >file.txt $ set -o noclobber $ echo "Can we overwrite it again?" >file.txt -bash: file.txt: cannot overwrite existing file $ echo "But we can use the >| operator to ignore the noclobber." >|file.txt $ # Successfully overwrote the contents of file.txt using the >| operator $ set +o noclobber # Changes setting back
In makefiles, a common target clobber means complete cleanup of all unnecessary files and directories produced by previous invocations of the
make command. It is a more severe target than clean and is commonly used to uninstall software. Some make-related commands invoke "make clobber" during their execution. They check the CLOBBER environment variable. If it is set to OFF then clobbering is not done.