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

328 天前
 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 有没有类似的机制,或者说第三方工具能够这样做?

2713 次点击
所在节点    Windows
26 条回复
brader
328 天前
你目的是什么,本来 win 使用习惯就不一样,都是桌面点图标启动
oldshensheep
328 天前
scoop
dbow
328 天前
用快捷方式?
vituralfuture
328 天前
@dbow 快捷方式似乎都是.lnk 的文件?跟软链接还是有点区别,因为软链接对其他程序是透明的,软链接不会影响其他程序调用它,但是 lnk 应该就不行了吧
dbow
328 天前
To create a file hard link: mklink /H linkName target
To create a directory junction: mklink /J linkName target
To create a directory symbolic link: mklink /D linkName target
To create a file symbolic link: mklink linkName target
jim9606
328 天前
单文件无依赖无配置的,可以自己建个目录扔进去。
有依赖的 dll 的也得放进去。

软件包形式的可以考虑打包成 msix,可以在 AppxManifest.xml 声明应用执行别名。winget 和商店版 python 就是这样做的。
hsfzxjy
328 天前
你可以放个 bat 到那个统一的目录,每个 bat 执行对应的程序
assiadamo
328 天前
可以的,参考 oracle jdk 目前的安装方式,他会在 path 里写一个路径,比如
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
这个 javapath 就是个快捷方式,里面是 java.exe 之类
nightwitch
328 天前
因为 Windows 上没有 LD_LIBRARY_PATH 这个机制,所以建一个集中的 bin 目录没啥用,除非只用静态链接的东西
0o0O0o0O0o
328 天前
scoop 好像是做了个包装
byteroam
328 天前
右键--新建快捷方式?
oldboy627
328 天前
单独的软件直接扔到 windows 目录下就行,终端就可以调用,不需要重启就可以生效。
lisxour
328 天前
事实上很多软件都会这么做(比如 dotnet global tool ),但是没有专门的软件去干这个。
witherzuo
327 天前
Windows 有一种叫做“应用别名”( App alias )的功能,不过需要应用包使用 msix 包格式打包并且包配置文件开启并指定对应的应用别名,比如 X410 就可以安装后通过 x410 这一应用别名在任何位置快速启动。系统中已配置好的应用别名可以在系统设置中查看。
Cu635
327 天前
windows 版的 gvim 是在 C:\Windows 下放入 gvim.bat 等这一系列的 bat 文件。
Vegetable
327 天前
你好,桌面。
INCerry
327 天前
可以加一个右击菜单,创建软连接到 PATH ,然后右击你想要的应用程序,选择创建软连接就会在 PATH 目录创建一个快捷方式。
`cmd.exe /c mklink "F:\CmdPath\%1" "%1"`
Honwhy
327 天前
看到有人提到了 Scoop 了,可能就是楼主想要的功能,Scoop 安装的 app 的启动 exe 都会放在同一个目录的,比如
path\to\Scoop\shims
mmdsun
327 天前
你在 D 盘创建一个 目录,比如叫: D:\my-app-path ,设置为 Path 。

然后每次安装软件后就去创建 mklink 一下?好像也不麻烦呀?

mklink chrome "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
kkocdko
327 天前
可以,我当年还使用 Windows 的时候就这样使用过。不过现在换用 Linux 了

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

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

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

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

© 2021 V2EX