What happens if the interpreter specified after #!
is not available?
I know that after the shebang I have to specify the interpreter (best practice is /bin/bash
). As a beginner I don't dare to try a lot I am afraid to damage my system.
Could you give me examples of screenshots of the two scenarios:
I just want to understand.
The Translating and Interpreting Service (TIS National) has produced some Frequently Asked Questions designed to answer some common questions for current and potential interpreters. If you cannot find what you are looking for on our website, please contact us and a TIS National staff member will help with your enquiry.
Problems with interpreters in healthcare arise due to a lack of access to professionals and qualified services providers. Moreover, hospitals face budget and time limitations, which prevent them from recruiting full-time interpreters in their health are a team.
But in practical terms, it also means that the information the interpreter heard or was exposed to is to die with the interpreter. The “ professional confidentiality ” is another principle without which language interpretation is not possible.
When TIS National receives feedback about an interpreter, operator or service, it is recorded in our systems before being referred to the appropriate area in TIS National to investigate.
try a lot I am afraid to damage my system.
Don't worry - it's safe here. Programmers make typos all the time.
the interpreter exists
For example, a file named thefile
contains the following:
#!/bin/cat
blabla
Then, when the file has executable permission bit set, then executing the file itself will execute the program /bin/cat
with one argument ./thefile
, as if you would type /bin/cat ./thefile
in your shell. Program cat
just prints the content of the file, so when exeucting ./thefile
will execute /bin/cat ./thefile
with will print the file content to the screen.
$ ./thefile
#!/bin/cat
blabla
the interpreter is not available
What happens if the interpreter specified after #! is not available?
If the shebang happens to be interpreted by your shell, it would be expected that your shell will then print some kind of an information message that it can't find the interpreter, with some error description that "this file does not exist" or similar. If the file is run via one of exec*()
system calls, then the kernel will return with ENOEXEC
error code (per source code here)
Let's take a file named anotherfile
with the following content:
#!fdsafdsafafdasfdas
blabla
For example, Bash shell will try to parse #!
line by itself. Bash interactive shell would print:
$ ./anotherfile
bash: ./anotherfile: fdsafdsafafdasfdas: bad interpreter: No such file or directory
But, for example, Busybox's Ash shell presents a different message:
$ ./anotherfile
/bin/sh: ./anotherfile: not found
Also https://en.wikipedia.org/wiki/Shebang_(Unix) might be interesting.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With