windows 的 PATH 能不能做一个类似/usr/bin 的路径,然后其他软件软链接过去

2023-06-16 16:18:52 +08:00
 vituralfuture

如题,linux 安装软件时,可以直接把可执行放到/usr/bin下,也可以把一个 shell 脚本放到/usr/bin下,也可以软链接到/usr/bin,不管是什么方式,都可以做到安装软件后马上就能从终端调用

然而使用 windows 时,大家的习惯都是把某个软件的 bin 目录添加到 PATH 中,这可能有几个问题

  1. bin 目录下的东西太多,可能在 PATH 中搜索某个文件的时候找到一些奇奇怪怪的东西
  2. 添加到 PATH 如果需要手动操作的话还是比较麻烦的,修改了 PATH 还可能需要重启
  3. 有些软件从使用习惯上来说,可能很少从终端调用,所以也不会添加到 PATH ,但如果能够从终端调用的话,写脚本还是非常方便的。例如 linux 安装了 google chrome ,终端就能够调用google-chrome-stable,然后输入google-chrome-stable google.com就能够用 chrome 打开一个网页

目前 windows 的包管理工具,例如 win-get ,似乎还是会把软件的 bin 目录添加到 PATH

我尝试过这个做法:手动创建一个~/path目录,然后把其他需要的东西统统软链接到这个目录,比如python,piparia2c,vim,最大的问题是:手动链接太麻烦了!

所以说,windows 有没有类似的机制,或者说第三方工具能够这样做?

3030 次点击
所在节点    Windows
26 条回复
hxy100
2023-06-17 01:34:52 +08:00
解决方案你自己文中已经说了:创建软链接到某个固定的目录,嫌 mklink 手动链接麻烦,可以写一个 bat 脚本放到 SendTo 目录( Tips:在资源管理器地址栏中可以使用 shell:sendto 快速跳转),然后对要创建链接的文件右键菜单发送到=》创建统一软链接就行了。很方便~
---
yolee599
2023-06-17 12:59:31 +08:00
@hxy100 #21 这右键菜单看得我头疼,还两个压缩工具,换我一定会用右键菜单管理工具通通删掉
SpecterShell
2023-06-17 15:19:24 +08:00
> 目前 windows 的包管理工具,例如 win-get ,似乎还是会把软件的 bin 目录添加到 PATH

用管理员权限运行 WinGet ,或者不用管理员权限而是打开系统设置里面的开发人员模式,WinGet 就能把可执行文件链接到统一的目录了。
不过 WinGet 现在创建的链接是符号链接,用在一些依赖同目录 DLL 的可执行文件会出点问题。Scoop 和 Chocolatey 都是通过 shim 来创建链接的,没有这个问题。个人建议还是用 Scoop 和 Chocolatey 来管理这类软件。
iorilu
2023-06-17 16:03:01 +08:00
@hxy100 那个脚本内容能贴下吗
lelandsu
2023-06-18 21:56:41 +08:00
打开 powershell 终端,vim $PROFILE, 添加别名:

Set-Alias sh "C:/Program Files/Git/bin/bash.exe"
Set-Alias scrcpy "C:/Users/user/Documents/software/scrcpy/scrcpy.exe"
Set-Alias vcpkg "C:\Users\user\Documents\code\vcpkg\vcpkg.exe"
Set-Alias kate "C:/Program Files/Kate/bin/kate.exe"
Set-Alias unison "C:\Users\user\Documents\Programs\unison\bin\unison.exe"

如果需要默认参数,可以定义个函数:

function ffmpeg { C:/Users/user/Documents/code/ffmpeg/ffmpeg.exe -hide_banner $args }
jifengg
2023-06-19 09:13:55 +08:00
假设楼主已经知道 mklink 。
我也这么做过,有些命令行工具软链到一个固定的目录。
不过,win 下一般不这么做有一些“历史”原因吧,很多软件设计的是要在“当前目录”下创建或读取其他文件信息,而很多软件获取“当前目录”,是启动程序的目录,而不是 exe 所在的目录(或 /etc/nginx 这种 linux 下固定的目录),也就是说,你在 d:/path 下软链 c:/soft/abc/app.exe ,在 e:/somedir 下通过 app.exe 命令打开它,它获取的“当前目录”是“e:/somedir”,这个当然可以通过改代码解决,不过说了是历史原因,很多软件已经不更新了。
这也是为什么 win 下的“快捷方式”,会多一个“起始位置”的设置,有些软件你换了这个设置,会出问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/949347

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX