현재 Windows 컴퓨터의 Linux 하위 시스템인 Ubuntu 20.04.2 LTS에 WolframEngine을 설치하려고 합니다. 이는 궁극적으로 내 WSL 명령줄에서 Wolframscript를 사용할 수 있게 되는 것입니다. 나는 WolframScript를 다음에서 다운로드했습니다.여기, 문제없이 설치되었습니다. 그러나 테스트하려고 하면(예: run wolframscript -code 2+2
) 다음과 같은 출력 메시지가 표시됩니다.
A WolframKernel location could not be determined.
Use -configure to set WOLFRAMSCRIPT_KERNELPATH.
Alternatively, export WolframKernel=/yourpath/WolframKernel.
If you have no Wolfram product currently installed,
the free Wolfram Engine for developers can be downloaded
at https://www.wolfram.com/engine/.
실제로 내 컴퓨터에는 라이센스가 부여된 Wolfram 커널이 있지만 Windows에서 실행되기 때문에 WolframEngine을 WSL에 설치해야겠다고 생각했습니다. 그래서 출력 프롬프트의 링크를 따라가서 다음과 같은 쉘 스크립트를 다운로드했습니다 WolframEngine_12.3.1_LINUX.sh
. 나는 이 스크립트를 (시스템의 여러 위치에서) 실행하려고 시도하지만 실행할 때마다 source WolframEngine_12.3.1_LINUX.sh
항상 출력을 얻습니다.
bash: source: WolframEngine_12.3.1_LINUX.sh: cannot execute binary file
내 시스템이 쉘 스크립트를 실행할 수 없는 이유를 잘 모르겠습니다. bash는 Ubuntu 배포판의 쉘 해석기이므로 이를 사용하여 실행했습니다. 명령줄에서 Wolframscript를 사용할 수 있도록 시스템에서 이 파일을 실행하려면 어떻게 해야 합니까?
답변1
짧은 답변:
순수 Linux 설치에서도 동작이 동일하므로 이것은 실제로 WSL 문제가 아닙니다. 설치 프로그램 스크립트는 다음을 얻기보다는 실행하도록 설계되었습니다.
chmod +x WolframEngine_12.3.1_LINUX.sh
sudo ./WolframEngine_12.3.1_LINUX.sh
sudo
(일반 사용자로 실행하려는 경우 설치 프로그램 메시지에 따라) 필요합니다 .
설명하다:
스크립트에는 두 부분이 포함되어 있습니다.
- 첫 번째 부분은 스크립트입니다.
- 두 번째 부분은 설치용 바이너리를 포함한 tarball입니다.
처음에 있는 스크립트는 자체적으로 바이너리 설치 프로그램을 읽고 압축을 푼 다음 실행합니다.
소스를 가져올 때 이것이 작동하지 않는 이유를 이해하려면 텍스트와 바이너리를 사용하여 고유한 스크립트를 만들어 이 시나리오를 재현할 수 있습니다.
파일 만들기 dont_source_me.sh
:
#!/usr/bin/bash
echo Hello
exit
그 다음에:
> bash # start a subshell
> source dont_source_me.sh
Hello
# Note that the subshell has exited since sourcing causes all commands to be executed within the current shell
> cat /usr/bin/ls >> dont_source_me.sh
> source dont_source_me.sh
bash: .: dont_source_me.sh: cannot execute binary file
> chmod +x dont_source_me.sh
> ./dont_source_me.sh
Hello
이런 방식으로 스크립트를 실행할 때 쉘은 종료되지 않습니다(소스를 가져올 때처럼). 실행된 스크립트는 자체 하위 쉘을 시작합니다. 이 경우 명령의 exit
결과는 다음과 같습니다.스크립트바이너리 로드에 도달하기 전에 종료하세요.