Linux 从.bachrc中键/值对的.list文件中设置环境变量

Linux 从.bachrc中键/值对的.list文件中设置环境变量,linux,bash,shell,terminal,environment-variables,Linux,Bash,Shell,Terminal,Environment Variables,我想从.list(键/值)文件中设置环境变量 因此,在我的.bachrc文件中,我将此文件称为: .bachrc: # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi source $HOME/file.list myVarOne=Abc!=;;$ myVarTwo=jfv^$+- 问题是my file.list包含以下变量: 文件。列表: # .bashrc

我想从.list(键/值)文件中设置环境变量

因此,在我的.bachrc文件中,我将此文件称为:

.bachrc:

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

source $HOME/file.list
myVarOne=Abc!=;;$
myVarTwo=jfv^$+-
问题是my file.list包含以下变量:

文件。列表:

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

source $HOME/file.list
myVarOne=Abc!=;;$
myVarTwo=jfv^$+-
所以当运行终端时:它在这些文件中抛出语法错误;因此,我被迫不使用.list文件,而是使用shell文件,并像这样编写变量(添加cotes):

因为我想继续使用.list文件而不是shell格式

我该怎么做


建议?

如果它对您有帮助,您可以使用以下命令,而不是使用
源代码。(仅当您确定file.list的内容时才执行此操作)

或者,您可以简单地执行以下操作:

sed "s/=\(.*\)/=\"\1\"/" file.list > tempfile ; source tempfile

您可以在bashrc中使用以下代码

while read line; 
do  
    key="$( cut -d '=' -f 1 <<< $line)"
    value="$( cut -d '=' -f 2- <<< "$line" )"
    export $key=$value
done <file.list
读行时
;
做

键=”$(如果要使用
source
,那么
file.list
的评估过程与其他脚本相同。
myVarOne='Abc!=;;$”
myVarTwo='jfv^$+-'
。这比在shell中解析文件要安全得多。
IFS=read-r key value
将避免这种需要对于
cut
。您仍然需要引用
$key=$value