TinyCore Linux e RVM

7

Estou executando o TinyCore Linux e quando tentei instalar o RVM (precisava de uma distribuição Linux portátil para o QA Automation) recebi um erro sh: syntax error:unexpected redirection .

Não sei porque estou recebendo este erro, pois o comando echo $SHELL retorna BASH.

Alguma idéia de como eu poderia conseguir esse trabalho ou obter mais detalhes sobre o assunto?

    
por jasonwryan 11.09.2011 / 09:24

2 respostas

4

Sua instalação do Tiny Core Linux provavelmente tem um shell mínimo instalado. Isso provavelmente é busybox . Você pode verificar isso verificando se /bin/sh está vinculado a outra coisa:

ls -l /bin/sh
lrwxrwxrwx    1 root     root             7 Dec 15 20:52 /bin/sh -> busybox

Desde que o Tiny Core Linux carrega o SO mínimo na RAM, isso é desejável. No entanto, se você precisa de um shell mais completo, você pode instalá-lo através do Navegador de aplicativos (veja o Lista de aplicativos disponíveis aqui , a versão de linha de comando do navegador do aplicativo é tce-ab ). O Tiny Core Linux atualmente possui: bash e tcsh .

Para instalar o bash:

tce-load -wi bash.tcz

O shell padrão ainda é /bin/sh , mas você pode gerar um bash shell executando bash dentro dele.

Para definir o shell padrão do tcuser :

which bash | sudo tee -a /etc/shells > /dev/null
sudo sed -i "/$(cat /etc/sysconfig/tcuser)/ s#:[^:]\+\$#:$(which bash)#" /etc/passwd

Você pode querer também instalar o GNU coreutils se você estiver procurando por mais utilitários padrão GNU para uso em scripts bash também:

tce-load -wi coreutils.tcz
    
por 16.12.2014 / 02:33
1

Parece que um dos scripts está sendo executado em /bin/sh , mas usa recursos estendidos do bash, possivelmente <<< ou <( . Você presumivelmente tem cinza como /bin/sh ; isso é legítimo (e o ash é mensuravelmente mais rápido e usa menos memória do que o bash, e é por isso que muitas distribuições não colocam o bash como /bin/sh ), mas ocasionalmente você encontra scripts que dependem do bash, mas começa com #!/bin/sh .

Se você tem $SHELL set to bash é irrelevante, cada script é executado pelo shell indicado na primeira linha (o shebang , aqui #!/bin/sh ). Eu tive uma rápida olhada nos scripts RVM, e parece que todos os que dependem de extensões bash começam corretamente com #!/usr/bin/env bash . Você tem um ~/.rvm anterior? Em caso afirmativo, tente movê-lo para fora do caminho.

Você pode obter um rastreamento de execução para um script de shell executando o shell com a opção -x . Então, execute bash -x ./rvm e veja onde o erro ocorre. Se o erro ocorrer em um script chamado indiretamente do script principal rvm , tente adicionar set -x nos outros scripts também (imediatamente abaixo da linha #! ) para ver um rastreio de execução para eles. Isso deve ajudar a localizar o script incorreto.

    
por 11.09.2011 / 19:49

Tags