/etc/profile 缺少结束以平衡此 if 语句
/etc/profile missing end to balance this if statement
当我想在 Linux 上为 JAVA 配置环境变量时。我在文件中添加了一些句子,/etc/profile
。
现在里面的内容如下
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "$(id -u)" -eq 0 ]; then
set PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
set PATH "/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
if [ "${PS1-}" ]; then
if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "$(id -u)" -eq 0 ]; then
set PS1 '# '
else
set PS1 '$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
export JAVA_HOME=/home/co-eda/Downloads/jdk-18.0.1.1
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=${JAVA_HOME}/bin:$PATH
然后我用
source /etc/profile
更新环境变量并得到这个错误
/etc/profile (line 30): Missing end to balance this if statement
if [ -r $i ]; then
^
from sourcing file /etc/profile
called on line 185 of file /usr/share/fish/config.fish
in function '.' with arguments '/etc/profile'
有谁知道为什么会发生这种情况以及如何修改此代码以便我可以 运行 顺利进行?如能得到答复,将不胜感激
发生这种情况是因为您正试图从 fish
shell 获取 /etc/profile
。 fish
的条件语句与 sh
/bash
/zsh
和其他 Bourne-compatible shell 不兼容。即 fish
是 而不是 一个 Bourne-compatible shell.
此文件 (/etc/profile
) 仅供 Bourne-compatible shell 使用,如顶部的注释块所指定
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
如果您只想为 current 终端 window 更新环境变量,请尝试 运行 这个 -
exec sh
. /etc/profile
exec fish
如果要为所有个应用更新环境变量,需要注销再登录。
当我想在 Linux 上为 JAVA 配置环境变量时。我在文件中添加了一些句子,/etc/profile
。
现在里面的内容如下
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "$(id -u)" -eq 0 ]; then
set PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
set PATH "/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
if [ "${PS1-}" ]; then
if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "$(id -u)" -eq 0 ]; then
set PS1 '# '
else
set PS1 '$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
export JAVA_HOME=/home/co-eda/Downloads/jdk-18.0.1.1
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=${JAVA_HOME}/bin:$PATH
然后我用
source /etc/profile
更新环境变量并得到这个错误
/etc/profile (line 30): Missing end to balance this if statement
if [ -r $i ]; then
^
from sourcing file /etc/profile
called on line 185 of file /usr/share/fish/config.fish
in function '.' with arguments '/etc/profile'
有谁知道为什么会发生这种情况以及如何修改此代码以便我可以 运行 顺利进行?如能得到答复,将不胜感激
发生这种情况是因为您正试图从 fish
shell 获取 /etc/profile
。 fish
的条件语句与 sh
/bash
/zsh
和其他 Bourne-compatible shell 不兼容。即 fish
是 而不是 一个 Bourne-compatible shell.
此文件 (/etc/profile
) 仅供 Bourne-compatible shell 使用,如顶部的注释块所指定
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
如果您只想为 current 终端 window 更新环境变量,请尝试 运行 这个 -
exec sh
. /etc/profile
exec fish
如果要为所有个应用更新环境变量,需要注销再登录。