Linux 从.bachrc中键/值对的.list文件中设置环境变量
我想从.list(键/值)文件中设置环境变量 因此,在我的.bachrc文件中,我将此文件称为: .bachrc: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
# .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
。