Next: Problems with Shell Mode, Previous: Problems with very large files, Up: Bugs and problems

### 6.2 How do I get rid of ‘`^M`’ or echoed commands in my shell buffer?

Try typing `M-x shell-strip-ctrl-m <RET>` while in `shell-mode` to make them go away. If that doesn't work, you have several options:

For `tcsh`, put this in your `.cshrc` (or `.tcshrc`) file:

         if ($?EMACS) then
             if ("$EMACS" =~ /*) then
                 if ($?tcsh) unset edit
                 stty nl
             endif
         endif

Or put this in your `.emacs_tcsh` or `~/.emacs.d/init_tcsh.sh` file:

         unset edit
         stty nl

Alternatively, use `csh` in your shell buffers instead of `tcsh`. One way is:

         (setq explicit-shell-file-name "/bin/csh")

and another is to do this in your `.cshrc` (or `.tcshrc`) file:

         setenv ESHELL /bin/csh

(You must start Emacs over again with the environment variable properly set for this to take effect.)

You can also set the `ESHELL` environment variable in Emacs Lisp with the following Lisp form,

         (setenv "ESHELL" "/bin/csh")

The above solutions try to prevent the shell from producing the ‘`^M`’ characters in the first place. If this is not possible (e.g., if you use a Windows shell), you can get Emacs to remove these characters from the buffer by adding this to your `.emacs` init file:

         (add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m)

On a related note: if your shell is echoing your input line in the shell buffer, you might want to customize the `comint-process-echoes` variable in your shell buffers, or try the following command in your shell start-up file:

         stty -icrnl -onlcr -echo susp ^Z