command-line - 附加到 PATH 变量和创建一个新变量之间有什么区别?
问题描述
我注意到在 Python 的某些安装过程中,创建了一个名为 PYTHONPATH 的新环境变量。
在我看过的每个教程中,设置命令行使用的方法是使用分号将 .exe 文件的目录添加到 PATH 环境变量中:
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
C:\Program Files\Python38;
C:\Program Files\Python38\Scripts;
%PyCharm Community Edition%;
C:\Users\WNeill\AppData\Roaming\npm;
C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin;
C:\Program Files\MySQL\MySQL Server 8.0\bin
但是,当我在解决一些从命令行启动 MySQL 的问题时,我注意到有一个单独的 PYTHONPATH 变量。它引用了我的机器上不再存在的 32 位 python 版本的目录。
这让我想到了一个问题,PATH 变量是否有任何特殊作用,或者我可以为每个目录(如SQLPATH
、PYTHONPATH
等)设置单独的变量JAVAPATH
吗?
解决方案
PATH 变量的特殊之处在于它被命令处理器 (cmd.exe) 用来查找任何被调用但在当前目录中不存在的可执行文件。此检索是自动完成的,并按照 PATH 变量中给定的顺序执行。例如,从文件系统的任何位置调用驻留在 Python38 文件夹或 Java 安装文件夹中的任何 .exe 文件,您只需输入文件名(javac myfile.java
例如)并按 Enter 键即可执行(假设 Java 安装目录为PATH 变量的一部分)。
如果您只是键入没有明确路径的文件名,您可以尝试where
在命令行上进行操作以了解真正调用了哪个可执行文件。在命令行上键入where /?
以获取帮助说明。例如where java
应该给你一条路径之类的C:\Program Files\Java\Java 1.8\java.exe
东西。
PATH 功能与只需键入calc
命令行并查看正在调用的计算器应用程序的原因相同。这是因为通常C:\Windows\System32\
是 PATH 的一部分并且calc.exe
位于此目录中。
如果您定义自己的环境变量,如 PYTHONPATH 等,则不会在此类定义上自动调用此“自动搜索”功能。但是,您可以在批处理文件中使用这些定义来做一些事情,Python 或任何创建这些变量的应用程序都可能使用它们来检索它们的文件。如果此变量丢失并且应用程序专门检查此变量以调用或检索此路径上的某些文件,那么即使将目录添加到 PATH 环境变量中,应用程序也会失败(除非应用程序也尝试仅调用文件并希望它通过 PATH 自动解决)。
在您自己的批处理文件中,您可以执行类似的操作
SET JAVAPATH=....
SET PYTHONPATH=....
SET PATH=%JAVAPATH%;%PYTHONPATH%
以更结构化的方式构建您的 PATH 变量。请注意,此 PATH 定义仅在批处理文件的范围内有效。它不会改变 Windows 在系统设置中维护的 PATH。
推荐阅读
- c - printf() 的系统调用替代方案?
- postgresql - Postgres 创建扩展命令 Docker 容器
- wpf - 如何为 WPF 中的滑块制作自定义字符串刻度标签
- c - POSIX 共享内存与 C 中的动态链接库/对象
- java - Dataflow 上的 Apache Beam 不接受用于 BigQuery 查询的 ValueProvider
- python - 该程序不会在 Tkinter Python 中更改文本之间等待
- elasticsearch - 对于 Rust Rocket 框架,是否可以将 GraphQL 连接到弹性搜索?
- apache - 如何将 Github 存储库克隆到运行 apache2 的 Amazon EC2 实例
- sql - 从给定的日期字段将日期转换为仅月份
- python - Python如果对象具有属性