I have a new computer loaded with SuSe Linux 10.When I attempt to invoke a program I have successfully used in the past for many years I get the response "cannot execute binary file". The file, (written for me years ago) forming the program has "execute" permission. I understand this means that the operating system realises this is a program, but not a standard binary program file containing machine instructions. I was told the operating system looks for an interpreter program to run it. The interpreter, not containing the expected character sequence, uses the default system interpreter and looks at the first line of the file, finds that it contains non-printable byte values and so condemns it as a binary file.
My program file, as written, contains only printable characters and starts with the identifying #! /bin/sh
It turns out that to the first character in the file there has been added a "Unicode byte-order mark" otherwise known, I am told, as a "zero-width non-breaking space". This by its nature is not a printable character nor a visible one. It is one, however, devilishly difficult to get rid of on a permanent basis. Following directions I tried, starting with the command "locale". The output indeed ended with "UTF8", the initial cause, I understand, of all the trouble. Again following directions I typed "LANG=en_GB" followed by "locale" again and then, using "vi" edited the file. The hated rogue character showed as three components in blue. When, using "x", I got rid of them, I thought I was on top of the problem, but the final stage which I will quote in full defeated me.
This is 'Finally, edit the file $HOME /.bash_profile and insert "LANG=en_GB" or "LC_ALL=en_GB" as appropriate to prevent the problem coming back'. The computer crashed. Moreover, I have not succeeded in locating the file. I suspect I have gone about it in the wrong way. I would be grateful for the exact key strokes required to get the file into "vi".
It seems strange to me that Linux, without my knowledge or my permission should insert a zero-width non-breaking space that not only prevents a program, very important to me (and, no doubt others), from working, but makes it difficult to handle the file because the first byte is not a printable character.
Please forgive my abysmal standard of computer literacy. In mitigation I would point out that I have been in touch with several gurus with, it seems, a total absence of familiarity with the zero-width non-breaking space alias the Unicode byte-order mark.
John Atkinson (Ancient John -- and I do not mind being called that because I now am ancient)