Skip to content

linux中配置go环境以及java多版本共存 #9

Description

@Livitor

环境介绍

在Linux系统中,环境变量是全局或局部定义的,用于存储有关操作系统环境的信息,如路径、文件位置等。配置环境变量可以通过几种不同的方法完成,下面是一些常用的方法:

1. 通过 export 命令(临时设置)

在终端中使用 export 命令可以临时设置环境变量,这些设置仅对当前会话有效,关闭终端后失效。

export PATH=$PATH:/your/new/path

这个命令会将 /your/new/path 添加到 PATH 环境变量的末尾, $PATH 表示当前 PATH 环境变量的值。

2. 修改用户的shell配置文件(永久设置)

要永久设置环境变量,可以将 export 命令添加到用户的shell配置文件中。这些文件在用户登录时自动执行,因此设置的环境变量会应用于每次登录会话。

  • 对于Bash shell,这些文件通常是 ~/.bash_profile、 ~/.bash_login、 ~/.profile 或 ~/.bashrc。
  • 对于Zsh shell,通常是 ~/.zshrc。
  • 对于Fish shell,是 ~/.config/fish/config.fish。

以Bash为例,你可以编辑 ~/.bashrc 文件(如果它存在),并在文件末尾添加:

export PATH=$PATH:/your/new/path

然后,你需要运行 source ~/.bashrc 命令(或重启终端)来应用更改。

3. 通过系统级配置文件(全局永久设置)

如果你想为系统上的所有用户设置环境变量,可以编辑系统级配置文件,如 /etc/environment、 /etc/profile、 /etc/profile.d/ 目录下的脚本文件等。

  • /etc/environment 文件:这个文件是PAM(Pluggable Authentication Modules)配置的一部分,在系统启动时读取,适用于所有用户。但是,它只接受 PATH、 HOME 等少数几个环境变量的设置。
  • /etc/profile 和 /etc/profile.d/:这些文件在系统启动和每次用户登录时执行,可以添加 export 命令来设置全局环境变量。

编辑这些文件后,通常需要注销并重新登录,或者重启系统,以使更改生效。

注意

  • 在编辑这些文件时,请务必使用文本编辑器(如 nano、 vim 或 gedit),并确保你有足够的权限(可能需要 sudo)。
  • 不同的Linux发行版和桌面环境可能有不同的最佳实践或默认配置文件。
  • 当你设置环境变量时,确保不要无意中覆盖了现有的重要环境变量。
  • 对于一些特殊的环境变量(如 JAVA_HOME、 PYTHONPATH 等),确保你了解它们的作用,并遵循你的应用程序或开发环境的要求来设置它们。

go环境安装

参考: https://www.cnblogs.com/niuben/p/16801294.html

我直接把 go 装在了自定义的目录, 并没有完全跟着教程做

直接在 /etc/profile中写入 go 的整体程序的目录, 然后变量引用该目录的 bin 文件夹, 也就是工具所在目录, 然后就是工作目录, 也就是 go 语言的项目文件所在目录

# GO_HOME
export GOROOT=~/Software/environment/go
export PATH="$PATH:$GOROOT/bin"
export GOPATH=$HOME/go/lib:$HOME/go/work

java在linux中双版本共存

linux 装了 java22 和 java8,java22 是通过官网的 .deb包安装的,安装完之后先不要动,默认 java 就是 22,如何官网下载的 java8 的压缩包, 解压出来就是环境文件,不需要安装,添加环境变量就好了,我直接在 /etc/profile中添加,系统变量,所有用户都生效

vim /etc/profile

添加内容:

我的是在这个位置,所以直接填写这个路径

# JAVA_HOME
export JAVA_HOME=~/Software/java8/jdk1.8.0_421
export PATH=$JAVA_HOME/bin:$PATH

为了达到来个版本共存,直接给 java8 中的 /bin/java备份一下,然后改个名为 java8,这样不但可以在任何位置使用 java8 也可以使用 java22,使用 java8 的时候用 java8 开头,java22 的话不需要改名,直接使用 java 开头即可

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions