当我使用内置的 Environment Variables 对话框或Path Editor 之类的东西更新我的 PATH ,然后打开命令提示符时,对我的 PATH 的更改将不会在控制台中注册,具体取决于命令提示符的位置从开始。
例如,如果我编辑我的 PATH,然后从开始菜单或桌面上的快捷方式启动 cmd.exe,那么我的 PATH 看起来不错:它已成功更新;但是,如果我从任何地方一个快捷方式启动CMD.EXE其他比开始菜单或桌面,在新的路径没有被读取,我得到的老路来代替。这很奇怪。
我试过从桌面上的快捷方式运行命令提示符,它工作正常;然后,我将完全相同的快捷方式复制到桌面上的子文件夹中,并且出现了非更新 PATH 问题。
我意识到这很难解释,所以我创建了一个截屏视频来展示这个问题。
这是在该截屏视频中看到的命令提示符快捷方式的屏幕截图:

这是在 Windows Vista Home Premium SP2 上。
我发现这个问题 [博客]:.bashrc 和 .bash_profile 之间的区别非常有用,但在看到投票最多的答案(顺便说一句非常好)后,我还有其他问题。在投票最多的正确答案结束时,我看到以下声明:
请注意,您可能会在这里和那里看到将环境变量定义放在 ~/.bashrc 中或始终在终端中启动登录 shell 的建议。两者都是坏主意。
为什么这是一个坏主意(我不是想打架,我只是想了解)?
如果我想设置一个环境变量并将其添加到 PATH(例如 JAVA_HOME)中,它是放置导出条目的最佳位置?在~/.bash_profile或~/.bashrc 中?
如果问题 2 的答案是~/.bash_profile,那么我还有两个问题:
3.1. 你会在~/.bashrc下放什么?只有别名?
3.2. 在非登录 shell 中,我相信~/.bash_profile没有被“拾取”。如果 JAVA_HOME 条目的导出在 bash_profile 中,我是否能够执行javac和java命令?它会在 PATH 上找到它们吗?这就是为什么某些帖子和论坛建议将 JAVA_HOME 等设置为~/.bashrc 的原因吗?
提前致谢。
我不小心通过创建一个带有路径名的新环境变量删除了 Path 环境变量。如何恢复旧的 Path 环境变量?
Windows 路径位置中的 %Windir% 和 %Systemroot% 有什么区别?
它们都显示“Windows”文件夹位置。
例如,我总是走这条路:
/user/something/somefolders/somewhere
但我不想打字
cd /user/something/somefolders/somewhere
一直在终端,我可以有一些短手吗?例如,我可以做类似的事情吗
cd 命令位置
替换路径?
我正在尝试执行一个简单的 docker-compose 命令。但是控制台错误:
Building patch-panel
Traceback (most recent call last):
File "bin/docker-compose", line 6, in <module>
File "compose/cli/main.py", line 71, in main
File "compose/cli/main.py", line 127, in perform_command
File "compose/cli/main.py", line 1080, in up
File "compose/cli/main.py", line 1076, in up
File "compose/project.py", line 475, in up
File "compose/service.py", line 358, in ensure_image_exists
File "compose/service.py", line 1082, in build
File "site-packages/docker/api/build.py", line 251, in build
File "site-packages/docker/api/build.py", line 313, in _set_auth_headers
File "site-packages/docker/auth.py", line 96, in resolve_authconfig
File "site-packages/docker/auth.py", line 127, …Run Code Online (Sandbox Code Playgroud) 在 Windows 中,我可以使用卷 ID 而不是驱动器号来访问磁盘驱动器吗?它对于外部驱动器可能非常有用。
由于互联网上的一些指示,我们的用户清除了他们的道路。
默认路径是什么,我是一名开发人员,所以我有很多额外的东西,我的用户应该在简单的 jane 上得到什么?
我尝试了以下实验。
在开始之前,我检查了 cmd 中的 PATH 变量,它具有以下值:
Path=C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\ProgramData\Lenovo\ReadyApps;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Calibre2\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;
Run Code Online (Sandbox Code Playgroud)
一开始,我以为cmd只在PATH变量包含的目录中寻找可执行文件,所以我随机选择了一个应用程序——winword.exe(Microsoft Word),并试图从命令行启动它:
start winword
Run Code Online (Sandbox Code Playgroud)
但令我惊讶的是,该程序启动了!我感到惊讶的原因是因为我已经在 PATH 变量中的所有目录中搜索了名为“winword”的 exe 文件,但我所有的搜索结果都是空的!
因此,我得出结论,命令提示符必须知道在 PATH 变量中指定的位置以外的地方进行搜索以查找可执行文件。
很明显,我接下来要做的是寻找“winword”可执行文件所在的精确位置。结果发现 winword.exe 位于此处:
C:\Program Files\Microsoft Office 15\root\office15
Run Code Online (Sandbox Code Playgroud)
因此给了我一个想法,也许 CMD 在执行“开始”命令时会自动查看 ProgramFiles 和 ProgramFiles(x86)(以及它们的所有子目录)?这导致我尝试启动安装在我的计算机上的另一个应用程序 Audacity,其 exe 文件位于:
C:\Program Files (x86)\Audacity
Run Code Online (Sandbox Code Playgroud)
再次令我惊讶的是,当我输入以下内容时,Audacity 未能启动:
start …Run Code Online (Sandbox Code Playgroud)