Ubuntu 16.04を18.04にアップグレードしました。アップグレード後、ログイン時にメッセージが表示されます
Error found when loading /etc/profile.
エラーは43行目と61行目の/usr/share/modules/init/sh
ファイルにあります。しかし、なぜ生成されるのかわかりませんでした。エラーは次のとおりです。
/usr/share/modules/init/sh:eval:line 43: syntax error near unexpected token `('
/usr/share/modules/init/sh:eval:line 43: ` untitled(1) _mlshddbg=" ;;'
/usr/share/modules/init/sh:eval:line 61: export: module: not a function
エラーを引き起こす/usr/share/modules/init/sh
の行は次のとおりです(行番号39〜43)。
if [ -n "${_mlIFS+x}" ]; then
IFS=$_mlIFS; unset _mlIFS;
else
unset IFS;
fi;
行61は次のとおりです。
export -f module
どうすれば修正できますか?
/usr/share/modules/init/sh
ファイルでshellcheck
を実行すると、43行目までの複数行で次の推奨事項が示されました。
if [ -n "`eval 'echo ${'$_mlv'+x}'`" ]; then
^-- SC2006: Use $(..) instead of legacy `..`.
^-- SC2086: Double quote to prevent globbing and Word splitting.
module() { eval `/usr/lib/x86_64-linux-gnu/modulecmd-compat sh $*`; }
^-- SC2046: Quote this to prevent Word splitting.
^-- SC2006: Use $(..) instead of legacy `..`.
^-- SC2048: Use "$@" (with quotes) to prevent whitespace problems.
^-- SC2086: Double quote to prevent globbing and Word splitting.
上記の推奨事項は、次の方法で組み込むことができます。
if [ -n "$(eval 'echo ${"$_mlv"+x}')" ]; then
module() { eval "$(/usr/lib/x86_64-linux-gnu/modulecmd-compat sh "$*")"; }