Atalho para executar o shell scipt? [duplicado]

0

Estou tentando criar um atalho que executará um arquivo .sh em algum diretório sem ter que navegar para o caminho absoluto.

Eu tentei usar aliases, que não funcionavam como. Usando links físicos / físicos, eles não funcionaram também, pois há certas dependências nesse diretório ao qual o script de shell faz referência.

Alguém tem alguma idéia de como ./ um arquivo sem ter que percorrer o caminho absoluto?

O alias que tentei é:

alias minecraft='/var/www/owncloud/data/admin/files/Spigot/start.sh'

Eu tentei a variante Path adicionando PATH=/var/www/owncloud/data/admin/files/Spigot:"$PATH" em ~/.bashrc .

O que então traz a mensagem:

Error: Unable to access jarfile spigot.jar

Estou usando uma versão cli do Ubuntu se isso ajudar, então não há Nautilus.

    
por user4985 25.02.2015 / 16:35

3 respostas

1

Você está recebendo o

Error: Unable to access jarfile spigot.jar

Mensagem de erro porque o script está usando o diretório de trabalho do ambiente bash quando ele está sendo executado. O script provavelmente está executando java -jar spigot.jar , em que o arquivo spigot.jar deve residir no mesmo diretório. Como o ambiente de scripts está apontando para outro diretório, o arquivo não pode ser encontrado.

Para corrigir isso, edite o arquivo /var/www/owncloud/data/admin/files/Spigot/start.sh e adicione esta linha logo acima do comando no qual ele está executando o java.

cd "$( dirname "${BASH_SOURCE[0]}" )"

Este comando altera o diretório atual de execução do script para o diretório em que ele reside.

O resultado deve ser algo como:

 #!/bin/bash

 cd "$( dirname "${BASH_SOURCE[0]}" )"
 java -jar spigot.jar

Depois, você pode usar o alias mencionado em sua pergunta, ou provavelmente junto com muitas das outras respostas que estão aqui.

Boa sorte!

    
por stalet 25.02.2015 / 18:45
1

Você não configurou seu alias corretamente, você deve configurá-lo da seguinte forma: alias minecraft='sh /var/www/owncloud/data/admin/files/Spigot/start.sh'

    
por kos 25.02.2015 / 16:44
0

Para se livrar da expressão "./" do seu script, você deve definir o caminho personalizado para seus scripts na variável PATH. Você pode fazer isso usando o comando de exportação (que irá configurar a variável no ambiente atual em execução) ou como abaixo (para solução permanente)

Para fazer isso; Edite o arquivo .bashrc em seu diretório pessoal com seu Editor favorito

% bl0ck_qu0te%

no final do arquivo, você pode colar o seguinte código.

#custom variable
export PATH=$PATH:/$HOME/bin:/var/www/owncloud/data/admin/files/Spigot/

O comando acima configura os caminhos adicionais para o local do arquivo de script, neste caso, o script .sh na pasta Spigot.

Uma coisa que você deve lembrar ao exportar o caminho é: você tem que copiar o conteúdo da variável PATH existente em um arquivo ou em um arquivo de texto usando outro editor que você pode fazer echo $PATH >> variables.txt

O motivo pelo qual estou dizendo é que, caso você tenha perdido o caminho da variável, você não poderá executar outros comandos com aliases.

Finalmente: digite   exec bash

Eu testei espero que funcione bem para você também. Você também deve conseguir executar o script sem digitar o caminho completo. Deve funcionar como start.sh

Boa sorte!

    
por rulebreaker4 25.02.2015 / 18:21