终端如何工作?

Mat*_*bes 2 command-line

解释更多关于这个问题。ls, cd, rm,...这样的命令是应用程序,如果它们是终端如何知道它们在哪里,终端只是与程序交互的接口,无非只是程序之间的交互而已? 其次,如果 bash 只是相互交互的程序,那么它是唯一可以在终端中工作的语言吗?

Wil*_*ilf 6

终端可用于在给定的 PATH 中执行程序 - 您可以通过echo $PATH在 bash 终端中运行来找到它- 示例输出:

/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/wilf/.local/bin:/home/wilf/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)

这是在终端启动时设置的 - 当它使用 BASH shell (许多 Linux 系统上的默认设置)时,它会~/.bashrc在启动前进行检查。然后,当您运行命令时,它会搜索命令的路径,并在找到后执行。

以我的例子$PATH上面,我可以将一个可执行脚本/home/wilf/.local/bin(例如,extension-update来自这里),然后就可以运行它终端,而不指定完整路径可执行文件(例如/home/wilf/.local/bin/extension-update/usr/bin/firefox等)