美文网首页
windows设置环境变量的5种方法

windows设置环境变量的5种方法

作者: mudssky | 来源:发表于2023-03-21 14:09 被阅读0次

    01.gui操作

    这是最常用的,我之前一直用的是这一种

    在此电脑右键,属性,高级系统设置,环境变量。。。

    02.set 命令

    和linux系统不一样,linux里面是可以把命令配到bashrc之类的文件里,这样环境变量就一直生效了。

    set命令,只在这个终端内生效,退出就失效。

    虽然也可以像linux一样把命令放到$profile里面,但是我觉得比较蠢,因为这样只有powershell终端里面生效,换成cmd是不会加载你这个profile的。

    这个和powershell里面直接修改变量是一样的

    像下面这样操作,当前窗口,搜索命令的Path变量就添加了。

    $env:Path + ";path/your/new"
    

    03.使用reg文件

    04 setx命令

    属于是很老的命令了

    基本用法

    setx 变量名称  变量值
    

    默认改的是用户环境变量,尾部添加/m,可以修改系统环境变量。

    例子:jdk版本管理

    因为jdk是通过JAVA_HOME变量配置的,所以可以下载多个jdk,然后用setx设置环境变量来切换

    这里用到了gsudo这个软件,比较方便,没有装这个软件需要打开管理员的终端执行命令

    #安装jdk11
    sudo choco install microsoftopenjdk11
    #上面安装完会提示安装jdk的位置,这里我们赋值之后设置JAVA_HOME,设置到系统变量。
    sudo setx JAVA_HOME C:\Program Files\Microsoft\jdk-11.0.18.10-hotspot /m
    #顺便把bin目录加到path
    sudo setx Path ($env:Path +';C:\Program Files\Microsoft\jdk-11.0.18.10-hotspot')
    
    ❯ setx  /?
    
    SetX has three ways of working:
    
    Syntax 1:
        SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]
    
    Syntax 2:
        SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]
    
    Syntax 3:
        SETX [/S system [/U [domain\]user [/P [password]]]]
             /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]
    
    Description:
        Creates or modifies environment variables in the user or system
        environment. Can set variables based on arguments, regkeys or
        file input.
    
    Parameter List:
        /S     system          Specifies the remote system to connect to.
    
        /U     [domain\]user   Specifies the user context under which
                               the command should execute.
    
        /P     [password]      Specifies the password for the given
                               user context. Prompts for input if omitted.
    
        var                    Specifies the environment variable to set.
    
        value                  Specifies a value to be assigned to the
                               environment variable.
    
        /K     regpath         Specifies that the variable is set based
                               on information from a registry key.
                               Path should be specified in the format of
                               hive\key\...\value. For example,
                               HKEY_LOCAL_MACHINE\System\CurrentControlSet\
                               Control\TimeZoneInformation\StandardName.
    
        /F     file            Specifies the filename of the text file
                               to use.
    
        /A     x,y             Specifies absolute file coordinates
                               (line X, item Y) as parameters to search
                               within the file.
    
        /R     x,y string      Specifies relative file coordinates with
                               respect to "string" as the search parameters.
    
        /M                     Specifies that the variable should be set in
                               the system wide (HKEY_LOCAL_MACHINE)
                               environment. The default is to set the
                               variable under the HKEY_CURRENT_USER
                               environment.
    
        /X                     Displays file contents with x,y coordinates.
    
        /D     delimiters      Specifies additional delimiters such as ","
                               or "\". The built-in delimiters are space,
                               tab, carriage return, and linefeed. Any
                               ASCII character can be used as an additional
                               delimiter. The maximum number of delimiters,
                               including the built-in delimiters, is 15.
    
        /?                     Displays this help message.
    
    NOTE: 1) SETX writes variables to the master environment in the registry.
    
          2) On a local system, variables created or modified by this tool
             will be available in future command windows but not in the
             current CMD.exe command window.
    
          3) On a remote system, variables created or modified by this tool
             will be available at the next logon session.
    
          4) The valid Registry Key data types are REG_DWORD, REG_EXPAND_SZ,
             REG_SZ, REG_MULTI_SZ.
    
          5) Supported hives:  HKEY_LOCAL_MACHINE (HKLM),
             HKEY_CURRENT_USER (HKCU).
    
          6) Delimiters are case sensitive.
    
          7) REG_DWORD values are extracted from the registry in decimal
             format.
    
    Examples:
        SETX MACHINE COMPAQ
        SETX MACHINE "COMPAQ COMPUTER" /M
        SETX MYPATH "%PATH%"
        SETX MYPATH ~PATH~
        SETX /S system /U user /P password  MACHINE COMPAQ
        SETX /S system /U user /P password MYPATH ^%PATH^%
        SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\
             Control\TimeZoneInformation\StandardName
        SETX BUILD /K "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
             NT\CurrentVersion\CurrentBuildNumber" /M
        SETX /S system /U user /P password TZONE /K HKEY_LOCAL_MACHINE\
             System\CurrentControlSet\Control\TimeZoneInformation\
             StandardName
        SETX /S system /U user /P password  BUILD /K
             "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
             CurrentVersion\CurrentBuildNumber" /M
        SETX /F ipconfig.out /X
        SETX IPADDR /F ipconfig.out /A 5,11
        SETX OCTET1 /F ipconfig.out /A 5,3 /D "#$*."
        SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway
        SETX /S system /U user /P password  /F c:\ipconfig.out /X
    

    Path变量设置

    setx有一个问题是设置的最大长度是1024

    所以path很长的时候,就不能用这个方法了。

    比如我执行这个命令就会报错

    sudo setx Path ($env:Path +';C:/Program Files/Microsoft/jdk-11.0.18.10-hotspot/bin') /m
    
    WARNING: The data being saved is truncated to 1024 characters.
    

    05.powershell调用.net

    其中GetEnvironmentVariable,一个参数是变量名,第二个参数target是范围,可以是 Process(当前进程),User(当前用户)或 Machine(本地计算机)

    # 获取当前的 path 值
    $path = [System.Environment]::GetEnvironmentVariable("Path","Machine")
    # 添加新的路径到 path 中
    $path += ";C:\NewPath"
    # 设置新的 path 值
    [System.Environment]::SetEnvironmentVariable("Path",$path,"Machine")
    

    相关文章

      网友评论

          本文标题:windows设置环境变量的5种方法

          本文链接:https://www.haomeiwen.com/subject/gssmrdtx.html