如题,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-06-16 16:21:08 +08:00
你目的是什么,本来 win 使用习惯就不一样,都是桌面点图标启动
|
2
oldshensheep 2023-06-16 16:21:13 +08:00 2
scoop
|
3
dbow 2023-06-16 16:30:12 +08:00
用快捷方式?
|
4
vituralfuture OP @dbow 快捷方式似乎都是.lnk 的文件?跟软链接还是有点区别,因为软链接对其他程序是透明的,软链接不会影响其他程序调用它,但是 lnk 应该就不行了吧
|
5
dbow 2023-06-16 16:43:49 +08:00 1
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-06-16 16:57:02 +08:00 via Android 1
单文件无依赖无配置的,可以自己建个目录扔进去。
有依赖的 dll 的也得放进去。 软件包形式的可以考虑打包成 msix,可以在 AppxManifest.xml 声明应用执行别名。winget 和商店版 python 就是这样做的。 |
7
hsfzxjy 2023-06-16 17:14:09 +08:00 via Android
你可以放个 bat 到那个统一的目录,每个 bat 执行对应的程序
|
8
assiadamo 2023-06-16 17:18:58 +08:00
可以的,参考 oracle jdk 目前的安装方式,他会在 path 里写一个路径,比如
C:\Program Files (x86)\Common Files\Oracle\Java\javapath 这个 javapath 就是个快捷方式,里面是 java.exe 之类 |
9
nightwitch 2023-06-16 17:32:00 +08:00 via Android
因为 Windows 上没有 LD_LIBRARY_PATH 这个机制,所以建一个集中的 bin 目录没啥用,除非只用静态链接的东西
|
10
0o0O0o0O0o 2023-06-16 17:39:15 +08:00 1
scoop 好像是做了个包装
|
11
byteroam 2023-06-16 17:52:16 +08:00
右键--新建快捷方式?
|
12
oldboy627 2023-06-16 17:55:13 +08:00
单独的软件直接扔到 windows 目录下就行,终端就可以调用,不需要重启就可以生效。
|
13
lisxour 2023-06-16 17:58:20 +08:00
事实上很多软件都会这么做(比如 dotnet global tool ),但是没有专门的软件去干这个。
|
14
witherzuo 2023-06-16 20:59:53 +08:00
Windows 有一种叫做“应用别名”( App alias )的功能,不过需要应用包使用 msix 包格式打包并且包配置文件开启并指定对应的应用别名,比如 X410 就可以安装后通过 x410 这一应用别名在任何位置快速启动。系统中已配置好的应用别名可以在系统设置中查看。
|
15
Cu635 2023-06-16 21:13:59 +08:00
windows 版的 gvim 是在 C:\Windows 下放入 gvim.bat 等这一系列的 bat 文件。
|
16
Vegetable 2023-06-16 21:18:33 +08:00
你好,桌面。
|
17
INCerry 2023-06-16 21:28:22 +08:00
可以加一个右击菜单,创建软连接到 PATH ,然后右击你想要的应用程序,选择创建软连接就会在 PATH 目录创建一个快捷方式。
`cmd.exe /c mklink "F:\CmdPath\%1" "%1"` |
18
Honwhy 2023-06-16 21:56:22 +08:00
看到有人提到了 Scoop 了,可能就是楼主想要的功能,Scoop 安装的 app 的启动 exe 都会放在同一个目录的,比如
path\to\Scoop\shims |
19
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" |
20
kkocdko 2023-06-17 00:58:15 +08:00
可以,我当年还使用 Windows 的时候就这样使用过。不过现在换用 Linux 了
|
21
hxy100 2023-06-17 01:34:52 +08:00
|
22
yolee599 2023-06-17 12:59:31 +08:00 via Android
@hxy100 #21 这右键菜单看得我头疼,还两个压缩工具,换我一定会用右键菜单管理工具通通删掉
|
23
SpecterShell 2023-06-17 15:19:24 +08:00
> 目前 windows 的包管理工具,例如 win-get ,似乎还是会把软件的 bin 目录添加到 PATH
用管理员权限运行 WinGet ,或者不用管理员权限而是打开系统设置里面的开发人员模式,WinGet 就能把可执行文件链接到统一的目录了。 不过 WinGet 现在创建的链接是符号链接,用在一些依赖同目录 DLL 的可执行文件会出点问题。Scoop 和 Chocolatey 都是通过 shim 来创建链接的,没有这个问题。个人建议还是用 Scoop 和 Chocolatey 来管理这类软件。 |
25
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 } |
26
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 下的“快捷方式”,会多一个“起始位置”的设置,有些软件你换了这个设置,会出问题。 |