web-dev-qa-db-ja.com

アップグレード後のログイン時に「/ etc / profileのロード時にエラーが見つかりました」

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

どうすれば修正できますか?

1
samurai

/usr/share/modules/init/shファイルでshellcheckを実行すると、43行目までの複数行で次の推奨事項が示されました。

  1. if [ -n "`eval 'echo ${'$_mlv'+x}'`" ]; then

             ^-- SC2006: Use $(..) instead of legacy `..`.
                           ^-- SC2086: Double quote to prevent globbing and Word splitting.
    
  2. 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.
    

上記の推奨事項は、次の方法で組み込むことができます。

  1. if [ -n "$(eval 'echo ${"$_mlv"+x}')" ]; then
  2. module() { eval "$(/usr/lib/x86_64-linux-gnu/modulecmd-compat sh "$*")"; }
1
samurai