1.为啥在可以在终端直接python+脚本路径运行python?
两个路径:
(1)python 解释器的路径:系统靠PATH环境变量去找这个程序,只要 PATH 配置好了,任意目录都能调用python。
(2)脚本文件的路径:给 python 看的,告诉解释器要执行哪个.py文件。
- 绝对路径:
python D:\project\a.py→ 终端在哪都可以运行 - 相对路径:
python a.py→ 要求终端当前工作目录下能找到 a.py
使用相对路径的时候,需要cd到相应的文件夹。
PATH 是操作系统里的一个环境变量,存了一堆文件夹路径列表。
作用:当你在终端敲一个命令(比如python、ls、dir),系统就会按照 PATH 里面写的文件夹,挨个去里面找对应的可执行程序.
PATH 管:系统去哪里找命令工具(python、pip、git)
通俗比喻:
PATH = 系统的「快捷搜索目录清单」
2. 那我是随便在终输入几个字母,都是这样在 PATH 环境变量中找可执行文件?
1. 不走 PATH:终端内置命令
终端(cmd、PowerShell、bash、zsh)本身就是一个程序,它自带了很多基础功能,这些功能不是独立的.exe或二进制文件,所以不会去 PATH 里搜索。
2. 走 PATH:外部可执行程序
像python、pip、git、notepad、code(VSCode)这种,都是独立安装的软件,对应磁盘上一个具体的可执行文件(.exe/ 二进制)。
3. 这几种情况也不搜 PATH
即使是外部程序,以下场景也会跳过 PATH 搜索:
- 写了完整绝对路径:比如
C:\Python312\python.exe,系统直接去这个位置启动程序,完全不碰 PATH。 - 写了相对路径:比如
.\mytool.exe、./a.out,系统只在当前终端所在目录查找,不搜 PATH。 - 命令别名 / 函数:比如有些系统里
python是指向python3的别名,别名优先级高于 PATH,会先匹配别名。
通俗类比:
终端就像手机系统,
内置命令 = 拨号、短信、设置,是系统原生功能,不用去应用列表找
外部程序 = 微信、抖音、Python,是你安装的 APP,系统去应用列表(PATH)里找图标启动