betweenGo

Shell Scripts with Windows LF’s Fail in Latest Cygwin

by Frank Kim on May.05, 2008, under Cygwin, Perforce

I am not sure when this happened but now in Cygwin shell scripts with Windows LF’s (the infamous control M’s) fail, i.e. Cygwin fails to run them because it will complain about the ‘\r’ character.

The simple way to fix this is to change your scripts to use UNIX LF’s by calling dos2unix or “conv -U”.

If you are using Perforce on Windows and seeing this problem then you can change your client to use “share” for the LineEnd option. Since Perforce stores all its text files in UNIX format on the server then it will write them out locally on your Windows machine in UNIX format. See the Perforce Knowledge Base article, CR/LF Issues and Text Line-endings. Fortunately Windows batch scripts with UNIX LF’s still run properly.

Note that when you make this change from the “local” LineEnd option then text files you already checked out will have the Windows LF’s. You will need to do a p4 sync -f on the files you want updated to have UNIX LF’s. Also when do you a p4 diff on your opened text files it will look like the whole file has changed. Again this is because of line feed issues. Doing a dos2unix on those opened text files will solve the problem.

  • Share/Bookmark

Related posts:

  1. Maven Assembly Convert Shell Scripts to use UNIX LF’s
  2. Cygwin Bash cannot execute DOS formatted scripts
  3. Unable to start Cygwin shell from Windows command prompt
  4. Turning off Perforce Windows Explorer Integration
  5. Cygwin Bash Scripts and Java

:

1 Trackback or Pingback for this entry

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!