Execute um script de qualquer lugar

8

Eu tenho um script:

#!/bin/bash
echo "$(dirname $(readlink -e $1))/$(basename $1)"

que fica aqui: /home/myuser/bin/abspath.sh , que tem permissões de execução.

Se eu executar echo $PATH , recebo o seguinte: /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/myuser/bin

Gostaria de poder, de qualquer diretório, chamar abspath <some_path_here> e chamar meu script. Estou usando bash, o que estou fazendo errado?

    
por Cheetah 24.05.2016 / 12:01

5 respostas

30

Você deseja digitar abspath , mas o programa é denominado abspath.sh . O problema não é se ele está no PATH, mas o fato de você simplesmente não estar usando seu nome para chamá-lo.

Você tem duas opções:

  1. Digite abspath.sh em vez disso.
  2. Renomeie o programa para abspath .
por 24.05.2016 / 12:04
6

Este código é pequeno o suficiente para codificá-lo como uma função de shell:

abspath() {
    echo "$(dirname "$(readlink -e "$1")")/$(basename "$1")" 
} 

E sim, você quer todas essas citações.

    
por 25.05.2016 / 00:23
4

defina um alias adicionando seu comando no arquivo .bashrc.

alias abspath='sh /home/myuser/bin/abspath.sh'

E não se esqueça de pesquisar o arquivo.

    
por 25.05.2016 / 12:11
2

Gostaria de renomear seu script bash para abspath e movê-lo para o diretório bin . Você será capaz de chamar abspath de qualquer lugar, então

    
por 24.05.2016 / 12:15
0

Uma terceira opção é criar um alias chamado abspath que aponte para o seu script abspath.sh.

    
por 24.05.2016 / 17:54