Como fazer um script que tornará executável outro script na mesma pasta? Não quero me preocupar com o caminho, pois estará no mesmo diretório. Então deveria ser algo como (estou tentando tornar o script D3GO executável):
#!/bin/bash
chmod +x "$pwd"/D3GO
Sou muito novo em scripts, então por favor não ria: D Obrigado!
Responder1
Quando você executa um bash
script, todos os seus comandos são executados no diretório de onde o script é invocado, incluindo pwd
. Por exemplo:
#!/bin/bash
pwd
Se você executar isso /whatever/path
, ele será exibido /whatever/path
, não importa onde o script esteja colocado.
Se quiser operar em arquivos no diretório 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ê o executasse /whatever/path
, não importa onde o script esteja realmente colocado.
Para operar no diretório onde o script está localizado, você pode usar a $BASH_SOURCE
variável. É um array e seu primeiro elemento é o caminho para o próprio script (ou seja /script/directory/myscript.sh
,). Você pode combinar isso com o dirname
comando para obter apenas o diretório:
chmod +x `dirname ${BASH_SOURCE[0]}`/D3GO
Isto irá procurar D3GO
no diretório onde este script é colocado, em vez de onde ele é invocado. (Obrigado a @muru por apontar meu erro.)
Responder2
Você estava super perto!
#!/bin/bash
chmod +x D3GO