Como criar um script que tornará outro script na mesma pasta executável?

0

Como criar um script que torne outro script na mesma pasta executável? Não quero me preocupar com o caminho, pois ele estará no mesmo diretório. Então deve ser algo como (eu estou tentando fazer o script D3GO executável):

#!/bin/bash    

chmod +x "$pwd"/D3GO

Eu sou muito novo em scripts, então pls não riem: D Obrigado!

    
por Dusan Milosevic 08.07.2014 / 18:09

2 respostas

2

Quando você executa um script bash , todos os comandos são executados no diretório em que o script é chamado, incluindo pwd . Por exemplo:

#!/bin/bash

pwd

Se você executar isso a partir de /whatever/path , ele exibirá /whatever/path , não importa onde o script seja colocado.

Se você quiser operar em arquivos no diretório de onde você está executando o script, você pode omitir pwd assim:

chmod +x D3GO

Isso será interpretado como chmod +x /whatever/path/D3GO se você executá-lo a partir de /whatever/path , não importando onde o script seja realmente colocado.

Para operar no diretório em que o script está localizado, você pode usar a variável $BASH_SOURCE . É uma matriz e o primeiro elemento é o caminho para o script em si (por exemplo, /script/directory/myscript.sh ). Você pode combinar isso com o comando dirname para obter apenas o diretório:

chmod +x 'dirname ${BASH_SOURCE[0]}'/D3GO

Isso procurará D3GO no diretório em que esse script é colocado, em vez de ser invocado a partir dele. (Obrigado ao @muru por apontar meu erro.)

    
por kraxor 08.07.2014 / 18:13
1

Você estava super perto!

#!/bin/bash    

chmod +x D3GO
    
por Sam-Graham 08.07.2014 / 18:13