要使用源代码永久更新 ~/.profile,仅适用于手动输入。整个系统重启也不会更新 ~/.profile,我需要手动更新它。
是否有一种特殊的代码风格可以将其用作 bash/shell 脚本中的工作代码,或者这种特殊代码是否不适用于自动化脚本?
需要它来自动安装 golang。
在下面的代码中,“source ~/.profile”行将不起作用,并且没有任何错误消息,其余部分工作正常:
#!/bin/bash
sudo apt update
sudo apt -y upgrade
cd ~
curl -O https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
tar xvf go1.12.5.linux-amd64.tar.gz
sudo chown -R root:root ./go
sudo mv go /usr/local
cd ~
sudo rm go1.12.5.linux-amd64.tar.gz
sudo echo "export GOPATH=\$HOME/work" >> ~/.profile
sudo echo "export PATH=\$PATH:/usr/local/go/bin:\$GOPATH/bin" >> ~/.profile
source ~/.profile
请您参考如下方法:
首选:
获取脚本本身而不是运行它 - 然后脚本中的命令在当前 shell 中运行,包括 source ~/.profile
.
备选方案(因为这会替换正在运行的 shell,历史记录、变量值和其他状态都将丢失。因此应该有一个非常使用此方法的充分理由):
使用 exec bash
或类似的东西代替 source ~/.profile
- 这会用另一个实例替换当前正在运行的 Bash,该实例本身将加载新的 。配置文件
。