簡體   English   中英

努力取消設置 bash 中的環境變量

[英]Struggling to unset an environment variable in bash

我之前使用以下方法設置了一個環境變量:

echo export "AVARIABLE=example" >> ~/.bash_profile

但現在使用后:

unset AVARIABLE

當我打開一個新的 shell 時,環境變量仍然存在嗎? 我在這里做錯了什么? 甚至跑步:

source ~/.bash_profile

不起作用?

如果要打開新的外殼,則要做的第一件事就是獲取~/.bash_profile 然后,再次設置變量。

如果要永久刪除它,請編輯~/.bash_profile以再次刪除有問題的行。 (這僅對新會話有效。)

如果只想在當前shell中unset ,那么unset很好,但是如您所見,它不會影響shell的新調用。

做這個:

#!/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”,並且該行就是您要刪除的行,那么這就是您的腳本。 否則,修改條件的regexp。

之后請注意文件的權限和所有者。 通常它們是644,如果您與擁有home目錄的同一用戶啟動它,則不會有任何問題。 但是我重復一遍……這是非常糟糕的做法,請謹慎!

干杯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM