
如题,linux 安装软件时,可以直接把可执行放到/usr/bin下,也可以把一个 shell 脚本放到/usr/bin下,也可以软链接到/usr/bin,不管是什么方式,都可以做到安装软件后马上就能从终端调用
然而使用 windows 时,大家的习惯都是把某个软件的 bin 目录添加到 PATH 中,这可能有几个问题
google-chrome-stable,然后输入google-chrome-stable google.com就能够用 chrome 打开一个网页目前 windows 的包管理工具,例如 win-get ,似乎还是会把软件的 bin 目录添加到 PATH
我尝试过这个做法:手动创建一个~/path目录,然后把其他需要的东西统统软链接到这个目录,比如python,pip,aria2c,vim,最大的问题是:手动链接太麻烦了!
所以说,windows 有没有类似的机制,或者说第三方工具能够这样做?
1 brader 2023 年 6 月 16 日 你目的是什么,本来 win 使用习惯就不一样,都是桌面点图标启动 |
2 oldshensheep 2023 年 6 月 16 日 scoop |
3 dbow 2023 年 6 月 16 日 用快捷方式? |
4 vituralfuture OP @dbow 快捷方式似乎都是.lnk 的文件?跟软链接还是有点区别,因为软链接对其他程序是透明的,软链接不会影响其他程序调用它,但是 lnk 应该就不行了吧 |
5 dbow 2023 年 6 月 16 日 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 |
6 jim9606  2023 年 6 月 16 日 via Android 单文件无依赖无配置的,可以自己建个目录扔进去。 有依赖的 dll 的也得放进去。 软件包形式的可以考虑打包成 msix,可以在 AppxManifest.xml 声明应用执行别名。winget 和商店版 python 就是这样做的。 |
7 hsfzxjy 2023 年 6 月 16 日 via Android 你可以放个 bat 到那个统一的目录,每个 bat 执行对应的程序 |
8 assiadamo 2023 年 6 月 16 日 可以的,参考 oracle jdk 目前的安装方式,他会在 path 里写一个路径,比如 C:\Program Files (x86)\Common Files\Oracle\Java\javapath 这个 javapath 就是个快捷方式,里面是 java.exe 之类 |
9 nightwitch 2023 年 6 月 16 日 via Android 因为 Windows 上没有 LD_LIBRARY_PATH 这个机制,所以建一个集中的 bin 目录没啥用,除非只用静态链接的东西 |
10 0o0O0o0O0o 2023 年 6 月 16 日 scoop 好像是做了个包装 |
11 byteroam 2023 年 6 月 16 日 右键--新建快捷方式? |
12 oldboy627 2023 年 6 月 16 日 单独的软件直接扔到 windows 目录下就行,终端就可以调用,不需要重启就可以生效。 |
13 lisxour 2023 年 6 月 16 日 事实上很多软件都会这么做(比如 dotnet global tool ),但是没有专门的软件去干这个。 |
14 witherzuo 2023 年 6 月 16 日 Windows 有一种叫做“应用别名”( App alias )的功能,不过需要应用包使用 msix 包格式打包并且包配置文件开启并指定对应的应用别名,比如 X410 就可以安装后通过 x410 这一应用别名在任何位置快速启动。系统中已配置好的应用别名可以在系统设置中查看。 |
15 Cu635 2023 年 6 月 16 日 windows 版的 gvim 是在 C:\Windows 下放入 gvim.bat 等这一系列的 bat 文件。 |
16 Vegetable 2023 年 6 月 16 日 你好,桌面。 |
17 INCerry 2023 年 6 月 16 日 可以加一个右击菜单,创建软连接到 PATH ,然后右击你想要的应用程序,选择创建软连接就会在 PATH 目录创建一个快捷方式。 `cmd.exe /c mklink "F:\CmdPath\%1" "%1"` |
18 Honwhy 2023 年 6 月 16 日 看到有人提到了 Scoop 了,可能就是楼主想要的功能,Scoop 安装的 app 的启动 exe 都会放在同一个目录的,比如 path\to\Scoop\shims |
19 mmdsun 2023 年 6 月 16 日 你在 D 盘创建一个 目录,比如叫: D:\my-app-path ,设置为 Path 。 然后每次安装软件后就去创建 mklink 一下?好像也不麻烦呀? mklink chrome "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" |
20 kkocdko 2023 年 6 月 17 日 可以,我当年还使用 Windows 的时候就这样使用过。不过现在换用 Linux 了 |
21 hxy100 2023 年 6 月 17 日 |
23 SpecterShell 2023 年 6 月 17 日 > 目前 windows 的包管理工具,例如 win-get ,似乎还是会把软件的 bin 目录添加到 PATH 用管理员权限运行 WinGet ,或者不用管理员权限而是打开系统设置里面的开发人员模式,WinGet 就能把可执行文件链接到统一的目录了。 不过 WinGet 现在创建的链接是符号链接,用在一些依赖同目录 DLL 的可执行文件会出点问题。Scoop 和 Chocolatey 都是通过 shim 来创建链接的,没有这个问题。个人建议还是用 Scoop 和 Chocolatey 来管理这类软件。 |
25 lelandsu 2023 年 6 月 18 日 打开 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 } |
26 jifengg 2023 年 6 月 19 日 假设楼主已经知道 mklink 。 我也这么做过,有些命令行工具软链到一个固定的目录。 不过,win 下一般不这么做有一些“历史”原因吧,很多软件设计的是要在“当前目录”下创建或读取其他文件信息,而很多软件获取“当前目录”,是启动程序的目录,而不是 exe 所在的目录(或 /etc/nginx 这种 linux 下固定的目录),也就是说,你在 d:/path 下软链 c:/soft/abc/app.exe ,在 e:/somedir 下通过 app.exe 命令打开它,它获取的“当前目录”是“e:/somedir”,这个当然可以通过改代码解决,不过说了是历史原因,很多软件已经不更新了。 这也是为什么 win 下的“快捷方式”,会多一个“起始位置”的设置,有些软件你换了这个设置,会出问题。 |