我之前使用以下方式设置了一个环境变量:
echo export "AVARIABLE=example" >> ~/.bash_profile
但现在使用后:
unset AVARIABLE
当我打开一个新shell时,env var仍然存在?我在这做错了什么?甚至跑步:
source ~/.bash_profile
不起作用?
答案 0 :(得分:3)
如果您要打开一个新shell,它首先要做的就是获取~/.bash_profile
。然后,变量再次设置。
如果您想永久删除它,请修改~/.bash_profile
以再次删除相关行。 (这只会对新会话生效。)
如果您只想在当前shell中取消设置它,那么unset
就可以了,但正如您所见,它不会影响shell的新调用。
答案 1 :(得分:-1)
这样做:
#!/bin/bash
file="~/.bash_profile"
readarray -t FILE < <(cat < "${file}")
rm -rf "${file}"
for item in "${FILE[@]}"; do
if [[ ! "${item}" =~ export ]]; then
echo "${item}" >> "${file}"
fi
done
小心!这将在一个数组中保存你的.bash_profile文件的内容...然后将删除它然后将尝试再次使用所有相同的行生成它,除了匹配你需要的正常表达的行...我把只有“导出”但请检查这一点,因为这可能会删除其他行,具体取决于.bash_profile的内容。
请注意这一点......如果您非常确定.bash_profile上只有一行包含字符串“export”,并且该行是您要删除的行,那么这就是您的脚本。否则,修改条件的正则表达式。
在此之后要小心文件的权限和所有者。通常它们是644,如果你使用拥有主目录的同一用户启动它,你就没有问题。但我再说一遍......这是一个非常糟糕的做法,小心!!
干杯。