
Estou executando um script (no tmuxinator) que tenta obter outro script (rvm). O rvm não permite explicitamente o fornecimento de sh. Não pensei que isso seria um problema, porque o shebang no script tmuxinator é
#!/bin/bash
mas quando insiro o código sugerido pelo pessoal do rvm para obter o rvm a partir de um script,
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
source "$HOME/.rvm/scripts/rvm"
fi
-Eu recebo
sh: 6: [[: not found
Por que sh está sendo usado como intérprete lá? Também usei #!/usr/bin/zsh (que é o valor de $SHELL no shell interativo do qual chamei o script) e #!/usr/bin/env zsh, mas eles apresentam a mesma reclamação.
Responder1
O RVM opera em um contexto /bin/sh? Este é provavelmente o motivo pelo qual você está enfrentando essa dificuldade; o script de origem herda o intérprete do pai. Ver:http://ss64.com/bash/source.html
. (operador fonte ou ponto)
Leia e execute comandos do argumento filename nocontexto atual do shell.
(ênfase minha)
Responder2
Parece que o problema foi que o script foi chamado de Ruby com
exec(script)
e exec sempre opera no contexto de /bin/sh, apesar da linha shebang no script chamado, aparentemente.
Mudando para
exec('/bin/bash', '-c', script)
funciona.