【问题标题】:warning after editing .bashrc [closed]编辑.bashrc后的警告[关闭]
【发布时间】:2021-01-19 10:29:51
【问题描述】:

我刚刚尝试将路径变量添加到 .bashrc。

cat <<EOF >> .bashrc
export JAVA_HOME=/opt/jdk
export GRADLE_HOME=/mnt/c/Zi/gradle
export GRADLE_OPTS="-Xmx2g -Xms512m -XX:MaxMetaspaceSize=384m"
export GRADLE_USER_HOME=/mnt/c/Z
export PATH="${JAVA_HOME}/bin:$PATH"

在此之后我收到警告:

-bash: warning: here-document at line 21 delimited by end-of-file (wanted `EOF')

谁能给我一个提示?

谢谢, 丽莎

【问题讨论】:

    标签: bash eof heredoc


    【解决方案1】:

    输入重定向&lt;&lt;EOF表示读取所有内容,直到出现EOF的行,并将其用作命令的输入;这被称为here-doc

    您缺少EOF 行。

    cat <<'EOF' >> .bashrc
    export JAVA_HOME=/opt/jdk
    export GRADLE_HOME=/mnt/c/Zi/gradle
    export GRADLE_OPTS="-Xmx2g -Xms512m -XX:MaxMetaspaceSize=384m"
    export GRADLE_USER_HOME=/mnt/c/Z
    export PATH="${JAVA_HOME}/bin:$PATH"
    EOF
    

    另外,在&lt;&lt;'EOF' 中引用EOF 标记以指示不应在here-doc 中扩展变量。最后一行中的${JAVA_HOME}$PATH 应该在加载.bashrc 时展开,而不是在添加时展开。

    【讨论】:

    • 谢谢。我已经做到了。没有任何警告了。我如何测试它现在是否有效?
    • 检查.bashrc 的结尾,看看是否添加了行。
    • 仅供参考,它之前工作过——它在脚本末尾停止读取。
    • echo $PATH .. 看看它是否有效
    • @Lisella 查看 .bashrc 中的 export PATH= 行。我很确定这是错误的,因为 ${JAVA_HOME}$PATH 的值将在 写入文件之前被替换,而不是被替换为脚本运行。你需要编辑你的 .bashrc 来解决这个问题。下一次,引用 here-doc 分隔符(即cat &lt;&lt;"EOF" &gt;&gt; .bashrc)告诉 shell 不要替换 here-doc 中的变量。
    猜你喜欢
    • 2012-01-03
    • 2018-08-26
    • 2015-05-19
    • 2011-04-05
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    相关资源
    最近更新 更多