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)