I can confirm that it does modify the value of the file on disk as part of the export process. Additionally, the src_emacs_lisp in the header does not export any results because by the time (buffer-file-name) is called the code is living in a temporary export buffer which is not visiting a file, note that a heading like the following would probably give the result you're after * name src_emacs-lisp{org-current-export-file} similarly you want the tangling to be done in the original Org-mode file (not the temporary export file), so that should be placed in a header argument as well. Try the following less evil version on for size and let me know if it doesn't solve your problems.