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 条回复
brader
2023-06-16 16:21:08 +08:00
你目的是什么,本来 win 使用习惯就不一样,都是桌面点图标启动
oldshensheep
2023-06-16 16:21:13 +08:00
scoop
dbow
2023-06-16 16:30:12 +08:00
用快捷方式?
vituralfuture
2023-06-16 16:36:25 +08:00
@dbow 快捷方式似乎都是.lnk 的文件?跟软链接还是有点区别,因为软链接对其他程序是透明的,软链接不会影响其他程序调用它,但是 lnk 应该就不行了吧
dbow
2023-06-16 16:43:49 +08:00
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
2023-06-16 16:57:02 +08:00
单文件无依赖无配置的,可以自己建个目录扔进去。
有依赖的 dll 的也得放进去。

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

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

mklink chrome "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
kkocdko
2023-06-17 00:58:15 +08:00
可以,我当年还使用 Windows 的时候就这样使用过。不过现在换用 Linux 了

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

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

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

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

© 2021 V2EX