execvp: Nenhum arquivo ou diretório

2

Eu escrevi um script ~/_bin/bcg para chamar outro script que usa o gimp para redimensionar uma imagem aleatória de um diretório e depois escrevê-la de volta para outro arquivo. Meu script (de nível superior) usa hsetroot para definir o plano de fundo X para essa imagem.

O único problema é que assim que eu chamo o script do outro cara com exec !/_bin/aura , meu script pára.

  1. Existe uma maneira de chamar programas e scripts sem exec?
  2. Existe uma maneira de impedir que o exec guilhotine meu script?

Se eu executo coisas sem exec eu recebo:

execvp: No such file or directory

Suponho que isso significa que o bash implicitamente usa algum programa execvp para analisar cada linha e esse programa não pode localizar (ou não executará) ~/_bin/aura .

Eu posso entrar em cada linha no terminal e conseguir o que quero. Eu simplesmente não posso colocar tudo em um script, mas é o que eu quero.

O que posso fazer?

#!/bin/bash
if [ -f ~/.bcg.bmp ]
then
        rm ~/.bcg.bmp
fi
~/_bin/aura "~/_wall";
hsetroot -center ~/.bcg.bmp
    
por Will 04.03.2012 / 01:37

2 respostas

2

Normalmente, quando você chama um comando em um script bash, o shell aguarda até que o comando seja concluído e, em seguida, execute o próximo comando. Quando você usa exec , está dizendo ao shell para se substituir pelo comando que está prestes a executar, ou seja, não há shell depois que o comando é iniciado. Então, quando o comando termina, é como se o script original também tivesse terminado. Você deve executar seu comando sem exec se quiser que o script continue sendo executado após o término do comando.

execvp: No such file or directory não parece uma mensagem de erro bash. Provavelmente está vindo do script aura , que está tentando executar algo que não pode ser encontrado em seu caminho de pesquisa.

    
por 04.03.2012 / 02:44
0

Quando você cita ~ ele perde seu comportamento especial, mas você pode usar $ HOME

#~/_bin/aura "~/_wall";
~/_bin/aura "$HOME/_wall";
    
por 13.03.2012 / 09:38