qual é a diferença entre “./command” e “bash command”

2

Eu tenho um arquivo de script simples, contém apenas uma linha:

rvm gemset use --create 2.0.0@PRJ_NAME

Se eu executar este script com:

./scriptname.sh

Eu recebo uma mensagem de erro conhecida do RVM

RVM is not a function, select.....

mas se eu executar o script com

bash scriptname.sh

está tudo bem.

Alguém pode explicar a diferença para mim?

    
por Ignazio Calò 27.05.2016 / 15:00

1 resposta

3

Existe uma grande diferença.

Vamos pegar o seguinte script chamado testScript (configurado para usar / bin / ksh como você vê no hashbang):

#!/bin/ksh
#im testscript
cd /proc/$$
file exe

Primeiro, vamos executá-lo com ./:

$ ./testscript
exe: symbolic link to /bin/ksh93

Agora chamando o bash:

$ bash testscript
exe: symbolic link to /bin/bash

Você vê a diferença? O interpretador usado pelo script foi alterado no segundo comando, portanto, se o script depender de algum código específico do ksh , ele será quebrado e, de outra forma, se os scripts dependerem de bash código específico, então vai quebrá-lo com o primeiro comando.

Outro teste que você pode fazer é ecoar $ PATH nos dois casos diferentes de execução.

    
por 27.05.2016 / 15:12