V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
GalAster
V2EX  ›  分享创造

env-sort 环境变量整理工具, 强迫症一本满足

  •  
  •   GalAster · 2022-11-24 22:36:52 +08:00 · 1598 次点击
    这是一个创建于 734 天前的主题,其中的信息可能已经有所发展或是发生改变。

    当你的开发机装了 3 个 Visual Studio, 4 个 LLVM, 5 个 CUDA, 6 个 Python, 18 个 JVM 等一堆杂七杂八的东西的时候.

    每次查看环境变量, 作为强迫症的你, 一定是崩溃的.

    当我整理完一台电脑然后发现公司的电脑没整理时, 我马上意识到, 是该写个工具自动化了.

    于是就有了 github.com/oovm/env-sort, 它可以帮你

    1. 排序环境变量, 可以区分用户环境变量和系统环境变量
    2. 删除重复的 PATH 环境
    3. 删除失效的 PATH 环境
    4. PATH 大小写改正成实际路径的大小写, 前提是该路径存在

    如果已经安装了 rust 环境, 可以直接用 cargo 安装.

    cargo install env-sort -f
    env-sort     # 预览执行
    env-sort -e  # 实际执行
    

    如果没有安装 rust 环境, 可以直接下载最新 release, 然后在同目录执行.

    6 条回复    2022-11-25 23:06:22 +08:00
    bigtear
        1
    bigtear  
       2022-11-25 09:45:15 +08:00
    不错的项目,star 了
    lisxour
        2
    lisxour  
       2022-11-25 10:35:00 +08:00
    你有没有想过乱排 PATH 产生的后果?
    lisxour
        3
    lisxour  
       2022-11-25 10:46:01 +08:00
    @lisxour 我的“乱排”的意思,打乱原先的顺序,正常来说,一台开发机,一个同样的软件可能会存在多份,我拿 python 来举个例子,你可能自己安装了一份 python 且这个的 PATH 优先级是在前面的,所以你一直以来的调用都是没问题的,但是你安装的 XXX 软件也内置了一份自身使用的 python 并置于了 bin 目录下,且 bin 的 PATH 是很低的,所以永远无法调用到这份 python ,此时如果你把顺序调整了,优先级完全被打破,100%遇到各种莫名其妙的依赖报错、环境报错,迟早的问题
    GalAster
        4
    GalAster  
    OP
       2022-11-25 12:15:46 +08:00
    用 `%VERSION%` 区分就行, 你那样本身就是有隐患的. 我多个 LLVM 就是写 `%LLVM_SYS_140_PREFIX%` 区分的.
    GalAster
        5
    GalAster  
    OP
       2022-11-25 12:22:35 +08:00
    为了确保不出问题 Shebang 写的时候也是 `#!/usr/bin/env python38`, `#!/usr/bin/env python2` 这样的吧, 如果写 `#!/usr/bin/env python` 多半当场就跑不起来
    bigtear
        6
    bigtear  
       2022-11-25 23:06:22 +08:00
    @lisxour 你这样的需求就不应该用这个软件🤣,这软件是给懒人用的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5413 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:21 · PVG 09:21 · LAX 17:21 · JFK 20:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.