TinyCore Linux를 실행 중이고 RVM(QA 자동화를 위한 휴대용 Linux 배포판 필요)을 설치하려고 하면 오류 메시지가 계속 나타납니다 sh: syntax error:unexpected redirection
.
명령이 BASH를 반환 하므로 왜 이 오류가 발생하는지 잘 모르겠습니다 echo $SHELL
.
이 작업을 수행하는 방법이나 문제에 대한 자세한 내용을 얻는 방법에 대한 아이디어가 있습니까?
답변1
Tiny Core Linux 설치에는 최소한의 쉘만 설치되어 있을 수 있습니다. 이것은 아마도바쁜 상자. /bin/sh
심볼릭 링크가 다른 것에 대한 것인지 확인하여 이를 확인할 수 있습니다 .
ls -l /bin/sh
lrwxrwxrwx 1 root root 7 Dec 15 20:52 /bin/sh -> busybox
Tiny Core Linux는 최소 운영 체제를 RAM에 로드하므로 이는 바람직합니다. 그러나 보다 완전한 기능을 갖춘 셸이 필요한 경우 다음을 통과할 수 있습니다.애플리케이션 브라우저(보다여기에서 사용 가능한 앱 목록, 애플리케이션 브라우저의 명령줄 버전은 tce-ab
)입니다. Tiny Core Linux에는 현재 bash
및 tcsh
.
배시를 설치하려면:
tce-load -wi bash.tcz
기본 셸은 그대로 유지되지만 /bin/sh
여기서 실행하면 bash 셸을 생성할 수 있습니다.bash
tcuser
기본 셸을 설정합니다 .
which bash | sudo tee -a /etc/shells > /dev/null
sudo sed -i "/$(cat /etc/sysconfig/tcuser)/ s#:[^:]\+\$#:$(which bash)#" /etc/passwd
coreutils
Bash 스크립팅을 위한 더 많은 GNU 표준 유틸리티를 찾고 있다면 GNU를 설치하는 것이 좋습니다:
tce-load -wi coreutils.tcz
답변2
스크립트 중 하나가 실행 중인 것 같지만 /bin/sh
bash 확장을 사용하는 것 같습니다 ( <<<
또는 <(
. , 그러나 때때로 bash에 대한 의존성을 만나게 될 것입니다 ./bin/sh
/bin/sh
#!/bin/sh
bash에 무엇을 설정 했는지 는 중요하지 않습니다 $SHELL
. 각 스크립트는 첫 번째 줄에 표시된 셸에 의해 실행됩니다(셰르본, 여기 #!/bin/sh
). RVM 스크립트를 잠깐 살펴보니 bash 확장에 의존하는 모든 스크립트가 올바르게 끝나는 것 같습니다 #!/usr/bin/env bash
. 이전에 기존 스크립트가 있었나요 ~/.rvm
? 그렇다면 방해가 되지 않는 곳으로 옮겨 보십시오.
이 옵션을 사용하여 쉘을 실행하면 쉘 스크립트의 실행 추적을 얻을 수 있습니다 -x
. 따라서 실행 bash -x ./rvm
하고 무엇이 잘못되었는지 확인하십시오. rvm
기본 스크립트에서 간접적으로 호출되는 스크립트 에서 오류가 발생하는 경우 set -x
다른 스크립트( #!
라인 바로 아래)를 추가하여 실행 추적을 확인해보세요. 이는 문제가 있는 스크립트를 찾는 데 도움이 될 것입니다.