Problema ao tentar executar o shell script: Nenhum arquivo ou diretório

4

Estou tentando executar o seguinte comando no bash:

./home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

que está me dando um

bash: ./home/abcdef/Desktop/jikesrvm/dist/production_x86_64-linux/rvm: No such file or directory

rvm é um arquivo bash e é executado corretamente quando tento executá-lo a partir de sua própria pasta ( production_x86_64-linux ). Ele também funciona bem se eu tentar executá-lo ao abrir o terminal em sua pasta pai, por exemplo, ou até mesmo em sua pasta pai-pai.

Eu corri com dos2unix apenas no caso e também verifiquei suas permissões de execução, que parecem estar bem.

O que estou perdendo aqui?

    
por devoured elysium 20.04.2015 / 02:41

3 respostas

3

você pode executar um script bash usando o seguinte comando

bash <location of the script file>

no seu caso

bash /home/abcdef/Desktop/jikesrvm/dist/production_x86_64-linux/rvm

funcionará

o que basicamente o. significa que é o seu local de diretório atual.

se você estiver sob sua pasta <user> , tente fazer isso

./Desktop/jikesrvm/dist/production_x86_64-linux/rvm

funcionará, mas primeiro você deve tornar o arquivo executável usando o seguinte comando

chmod +x ~/Desktop/jikesrvm/dist/production_x86_64-linux/rvm
    
por bolzano 20.04.2015 / 02:47
2

Enquanto você está tentando:

./home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

O shell sempre tratará . na frente de um caminho como o diretório atual e, portanto, o caminho sempre será um caminho relativo. Então, o shell está tentando encontrar um arquivo executável no local:

$PWD/home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

que está errado, como você pode ver. Você executaria um script executável que é o diretório atual como ./script.sh .

Você pode simplesmente executar o executável usando o caminho absoluto (dado que o script é executável):

/home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

Ou como ~ é expandido pelo shell como $HOME :

~/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

Ou até mesmo apenas o nome do script, se o diretório que contém o script estiver na variável de ambiente PATH .

Agora, se o seu script é Não executável , você pode executá-lo também sem torná-lo um executável dizendo ao shell qual programa manipulará o script, ou seja, dando o script como um argumento para bash (shell):

bash /home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
    
por heemayl 20.04.2015 / 03:28
1

Quando você usar ./ para executar um arquivo, ele procurará na pasta atual ( . ) por uma pasta chamada home em vez de iniciar a partir do diretório raiz ( / ).

Usar o comando bash explicitamente como na resposta de bolzano começa no diretório raiz em vez daquele em que você está.

Para usar o comando sem bash , você pode inserir

/home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

ou

Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

do seu diretório pessoal, supondo que esteja marcado como executável.

    
por Robobenklein 20.04.2015 / 02:55

Tags