Rscript의 성능이 좋지 않습니다.

Rscript의 성능이 좋지 않습니다.

이것은 작동합니다:

TMPDIR="/tmp/___"
export TMPDIR
mkdir -p "$TMPDIR"
script="$TMPDIR"/myscript
cat <<'EOF' > "$script"                                                                       
#!/usr/bin/Rscript --vanilla --slave                                                          
EOF                                                                                           

chmod 755 "$script"
ls -l "$script"
"$script"
ls -l "$script"

이렇게 하면 " 중요한 내용이 있는 경우 이 프로그램을 실행하지 마세요"가 제거되고 $script보관 됩니다 ./tmp/tmp

TMPDIR="/tmp/   "
export TMPDIR
mkdir -p "$TMPDIR"
script="$TMPDIR"/myscript
cat <<'EOF' > "$script"                                                                       
#!/usr/bin/Rscript --vanilla --slave                                                          
EOF                                                                                           

chmod 755 "$script"
ls -l "$script"
"$script"
ls -l "$script"

이들 사이의 유일한 차이점은 $TMPDIR공백을 포함한다는 것입니다.

이러한 행동 차이의 이유는 무엇입니까?

$ Rscript --version
R scripting front-end version 4.1.2 (2021-11-01)
$ cat /etc/issue.net 
Ubuntu 22.04.1 LTS

점점 더 버그처럼 보입니다. 소스에서 R을 컴파일하고 TMPDIR=" "로 설정하는 경우:

:
make[3]: Entering directory '/tmp/R-devel/src/library/profile'
building system startup profile
make[3]: Leaving directory '/tmp/R-devel/src/library/profile'
make[3]: Entering directory '/tmp/R-devel/src/library/translations'
building package 'translations'
make[4]: Entering directory '/tmp/R-devel/src/library/translations'
make[4]: Leaving directory '/tmp/R-devel/src/library/translations'
make[3]: Leaving directory '/tmp/R-devel/src/library/translations'
make[3]: Entering directory '/tmp/R-devel/src/library/base'
building package 'base'
make[4]: Entering directory '/tmp/R-devel/src/library/base'
/bin/bash: line 9:  /R3273656: No such file or directory
/bin/bash: line 12:  /R23273656: No such file or directory
cmp:  /R23273656: No such file or directory
mv: cannot stat ' /R23273656': No such file or directory
make[4]: *** [../../../share/make/basepkg.mk:65: mkRbase] Error 1
make[4]: Leaving directory '/tmp/R-devel/src/library/base'
make[3]: *** [Makefile:31: all] Error 2
make[3]: Leaving directory '/tmp/R-devel/src/library/base'
make[2]: *** [Makefile:37: R] Error 1
make[2]: Leaving directory '/tmp/R-devel/src/library'
make[1]: *** [Makefile:28: R] Error 1
make[1]: Leaving directory '/tmp/R-devel/src'
make: *** [Makefile:62: R] Error 1

또한 sysutils.c:1893의 TMPDIR을 DUMMY로 변경하면 문제가 해결됩니다.

관련 정보