linux - 如何从 bash 脚本修改/etc/environment

标签 linux bash environment-variables

目前,我正在尝试使我们在工作中使用的程序自动化。每当我们安装 Oracle 的 JDK 时,我们需要手动将它添加到我们的全局 PATH 变量中。以下是程序的摘录:

sudo vi /etc/environment
add this at the beginning of the PATH : "/opt/jdk1.6.0_45/bin:"

这是我电脑上/etc/environment的内容:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

这是修改后的样子:

PATH="/opt/jdk1.6.0_45/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

不要忘记这个文件不是脚本,而是一个包含 KEY=VALUES 的文件。此文件存储系统范围的区域设置和路径设置。

我的问题是如何在不涉及任何手动操作的情况下从 /etc/environment 添加到 PATH 变量的新路径,最好仅使用 bash 脚本。此外,如果我运行生成的脚本两次,我希望避免看到我的 JDK 路径被多次添加。

最佳答案

可以先用sed删除再插入jdk路径:

#!/bin/bash
sed -e 's|/opt/jdk1.6.0_45/bin:||g' -i /etc/environment 
sed -e 's|PATH="\(.*\)"|PATH="/opt/jdk1.6.0_45/bin:\1"|g' -i /etc/environment

关于linux - 如何从 bash 脚本修改/etc/environment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26263249/

相关文章:

linux - 在 bash 脚本中连接字符串(与 shell 不同的行为)

linux - 如何让 Perl 遍历目录中的所有文件?

asp.net-mvc - 为 Azure 上托管的 MVC 网站设置 GOOGLE_APPLICATION_CREDENTIALS

windows - 如何在Windows上设置多行环境变量?

linux - spark standalone 没有 hdfs

linux - 如何创建用于测试的虚拟流量?

linux - cd 不能在 linux 服务器的 bash 脚本中工作?

java - System.getenv 不会在 Amazon Linux 上选择任何系统变量

c - MPI 中如何共享工作区?

r - 在 Debian 服务器 (linux-gnu) 上将 R 版本 2.15.1 升级到 3.3