本文共 1370 字,大约阅读时间需要 4 分钟。
在 Linux 系统中“一切皆文件”,这一原则同样适用于操作系统的命令执行机制。 Whenever you input a command and press enter, the system will initiate a complex process to execute the command. 这个过程涉及到 shell 层和内核层,结合应用层的资源管理和环境变量配置。
当输入命令并回车后,整个执行过程可分为三个步骤:
用户输入命令
用户在终端或命令行界面中输入命令。命令可以是内部命令(如 pwd,由 shell 自带)的也可以是外部命令(如 ls,是可执行文件 /usr/bin/ls)。shell 解析命令
shell 会检查是否有 alias(别名),如果有则使用别名执行相关程序。shell 发现命令是外部命令后,会查询 PATH 环境变量,搜索命令的可执行文件。PATH 变量定义了多个目录,shell 会依次检查这些目录,直到找到对应的可执行文件。内核执行命令
内核会加载可执行文件到内存中,然后执行其指令。如果命令需要访问文件、网络或其他系统资源,内核会根据请求进行相应操作。shell 层是用户与系统交互的核心界面。它不仅解析命令,还维护与命令相关的环境变量,如 PATH、PS1(显示终端提示符)、 aliases、 history 等。
** PATH 环境变量**
PATH 定义了可能包含命令的目录列表。shell 会依次检查这些目录,直到找到命令的可执行文件。别名(alias)
Usuario 可以为命令设置别名,如alias ls='ls --color=auto'
。提示符(PS1)
提示符由 $PS1 环境变量定义,定义了 shell 提示符的显示方式。默认提示符格式为[用户名@主机名:~#]
,其中 ~
表示用户的主目录,#
表示 root 用户,默认是普通用户 $
。内部命令
内部命令由 shell 本身niestop在内存中运行,执行效率高,如pwd
、rm -i
。外部命令
外部命令需要从磁盘读取可执行文件到内存后再执行,其速度相对较低。查找命令的位置
使用命令which
查找特定命令的可执行文件位置,比如 which ls
查看 /usr/bin/ls 的路径。永久别名设置
要实现永久别名,可将其添加到~/.bashrc
文件中,执行 source ~/.bashrc
后生效。shell 提示符可以根据需求进行个性化设置:
默认提示符
提示符由$PS1
定义,支持多种转义字符,如 \d
(日期)、\h
(主机名)、\w
(当前工作目录)。修改提示符
修改提示符可通过设置$PS1
或直接编辑.bashrc
文件。每次 Shell 提示符会显示当前用户、主机名及工作目录。查看命令历史
使用history
命令查看命令记录,结合 !
弹 回最近执行过的命令。命令行技巧
输入时,按下 Tab 键可自动完成命令名称或路径。按 Esc + b 可以列出命令的别名。通过理解这些步骤和原理,用户可以更好地管理和优化他们的 shell 环境。
转载地址:http://dawfk.baihongyu.com/