Environment configuration is a big difficulty for everyone to learn Linux, especially the various path configurations.
Today, let's talk about two or three things about PATH.
1. First, what is a path?
PATH, the PATH in the computer system is for files.
There are absolute paths and relative paths:
- Absolute path, which must be written from the root directory / directory;
- Relative path, not written by /;
2. PATH variable $PATH
Have you ever wondered why we can execute various commands in any directory of Linux?
This is due to the help of the environment variable PATH.
You can log in to your Linux system and enter echo $PATH. Note that the PATH here is capitalized.
[iron2222@localhost ~]$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/iron2222/bin
Note: each path will be separated by: and there are sequential differences between them.
When you enter a command, the system will find the corresponding executable file according to these paths, and use whoever finds it first.
3. How to modify path variables?
Especially when configuring the cross compilation tool chain, I was confused at that time:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
For example, I newly downloaded a fun command that can generate a lot of interesting things, but I don't know why there is no response to the command input.
At this time, it is likely that your path is not configured properly.
For example, let's cancel the path of the most commonly used ls command and see what happens.
[iron2222@localhost ~]$ su - root Password: [root@localhost ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@localhost ~]# mv /bin/ls /root [root@localhost ~]# ls -bash: ls: command not found
You will find that no matter which directory you are in, you can't execute the ls command.
Because the directory / root is not in the directory specified by PATH, it is impossible to find the command ls if you choose to be in the directory / root.
If you want root to execute ls in any directory, add / root to PATH.
[root@localhost ~]# PATH="$:/root"
You can check:
[root@localhost ~]# PATH="$:/root" [root@localhost ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root
Found that / root already exists.
[root@localhost ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root [root@localhost ~]# ls anaconda-ks.cfg install.log install.log.syslog ls
At this time, the command ls can also be used.
After this experiment, don't forget to move the ls command back!!!
[root@localhost ~]# mv /root/ls /bin
At this time, you will suddenly find that why ls I have moved back, why can't I use it.
[root@localhost ~]# ls -bash: /root/ls: No such file or directory [root@localhost ~]# ls -bash: /root/ls: No such file or directory
Don't be nervous. Just log out of exit and log in again.
[root@localhost ~]# exit logout [iron2222@localhost ~]$ ls Desktop Documents Downloads Music Pictures Public Templates Videos [iron2222@localhost ~]$ su - root Password: [root@localhost ~]# ls anaconda-ks.cfg install.log install.log.syslog [root@localhost ~]#
That's it. Good morning, good afternoon and good night!