如何使用bash写入/etc/profile |没有权限

How to write in /etc/profile using bash | Permission Denied

我正在创建一个 bash 脚本来设置 Ubuntu 16.04 lts OS 来下载、安装和其他东西,而不需要单独介绍每个命令,我必须写/etc/profile文件添加一个PATH环境变量。当我的代码进入该行时,会出现“权限被拒绝”消息,这就是我所拥有的:

sudo echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
bash: /etc/profile: Permission denied

你知道我怎么解决这个问题吗?

Shell i/o 重定向发生在 之前 shell 执行你的命令......换句话说,当你写:

sudo somecommand >> /etc/profile

>> /etc/profile 部分以当前用户身份执行,而不是 root。这就是您收到 "permission denied" 消息的原因。有多种方法可以解决这个问题。你可以 运行:

sudo sh -c "echo export PATH=$PATH:/usr/local/go/bin >> /etc/profile"

或者您可以利用附加 (-a) 标志到 tee 命令:

echo "export PATH=$PATH:/usr/local/go/bin" | sudo tee -a /etc/profile
sudo sh -c "echo MY_GLOBAL_ENV_TO_MY_CURRENT_DIR=$(pwd)" >> /etc/environment"