In Linux, an executable file means that the file can be run and the file has "x" permissions; the executable file can be a code file (script file) or a binary file. There are two ways to run a file: 1. Use the interpreter to run the file directly; 2. Use "./" to run the file, and the syntax is "./ file name".
#The operating environment of this tutorial: linux7.3 system, Dell G3 computer.
An executable file refers to a file that can be run. This file can be a code file, or It can be a binary file
There are only files and directories in the Linux file system (everything is a file).
In Linux, there are two main ways to run a file: bash test .sh
or ./test.sh
.
This test.sh
is called an executable file.
Executable file Divided into two types: one is a common binary file, and the other is a script file. The former, such as the commonly used ls
, mkdir
commands, etc. are all binary files, while the latter is a common There are shell scripts or Python scripts that rely on interpreter execution.
You can check the type of a file through the command file
. For example, a binary file will display:
The script file outputs:
As you can see from the two script files above, the output content is different. One is recognized as shell script
and the other is considered an ordinary text file. However, both files are executable:
As shown in the picture: after running both files, they will output hello world!
.
Two different runs are used here Method, the first method directly specifies an executable file ./hello.sh
. If run in this way, the script must meet the following two requirements:
The file has "x" permissions
If the file is not a binary type file, its interpreter must be specified in the first line at the beginning
The first one refers to "rwx" in the Linux file system. r means read-only, w means writable, and "x" means that the file is executable.
Judge this file here The executable is somewhat similar to the "duck type", that is, as long as an animal can quack, I think it is a duck. At this time, even if a dog walks over and quacks twice, then it is also considered a duck.
Convert. No matter what the file type is, as long as the file has "X" permissions, the system will consider it an executable file.
Example: Create a new text type file with the content hello world !
, and then add "x" execution permission.
#You can see that when viewing the file type, it is consistent with the content printed by the Python script above, and it is considered to be a txt file.
Then execute permission is added to it, and then './' is run, prompting "Command not found".
Here, the system treats it as a shell script to execute , read the content from it in turn, and then hand it over to the "/bin/bash" interpreter for execution.
Then follow the same method and turn the Python script into an executable file recognized by the system
At this time, you can also use ./
to run it.
There are two ways to run a file. The first is to run it directly using its interpreter, such as:
Each interpreter can only run scripts corresponding to its own syntax. If another interpreter is used, an error will be thrown. For example, the Python interpreter cannot run shell scripts.
Let’s talk next./
, dot means "current directory" in Linux system, and "/" is an ordinary path separator. When combined together, it is nothing more than a relative path, such as:
So when executing an executable file recognized by the system, ./
is not the most important part, the file itself is. For example, I can run an executable file with an absolute path document:
If you remove the /root/file/
in front, and then delete the .py
at the end, that is, just enter "hello" and print a hello world !
, then this file seems to be no different from a command in the Linux system.
Next, let’s turn it into a "command" that is the same as ls
.
First rename the executable file
Then put it in / In the usr/bin directory
, enter hello directly, and hello world!
is printed directly. From the side, as long as you turn a script into an executable file recognized by the system and put it in the /usr/bin directory, it will be no different from commonly used commands.
In fact, there is a variable called PATH in the Linux system. This variable is a set of paths. When When you enter a command (such as ls), it will look for a file with the corresponding name in the directory given in the content of this variable, and then run it.
So, if I can put the current The directory is also added to this variable, then the files in the current directory can be directly run by the system without specifying a path.
If a file does not have " x" belongs to the line, then it cannot be executed even if it is thrown into the /usr/bin directory.
Generally, the PATH variable is rarely declared directly, and it will also be written to when operating on this variable. ~/.bashrc
directory or /etc/profile
in the files of these two environment variables. In this way, after the session is connected, the contents inside will be automatically run and this directory will be added. to the PATH variable.
If a script file has "x" permissions and the corresponding interpreter is specified on the first line, or a binary If the file has "X" permission, then the file becomes an executable file recognized by the system. At this time, when running it, not only can you specify an absolute path or a relative path, but you can also execute it through its interpreter, or you can put it where it is. Add the directory to the "PATH" variable.
If a script file does not meet the above requirements, you can only execute it through its interpreter, such as "bash hello.sh" or "python hello.py" this way.
Related recommendations: "Linux Video Tutorial"
The above is the detailed content of What is a linux executable file?. For more information, please follow other related articles on the PHP Chinese website!