Criando um alias para um script bash

10

Então tentei experimentar e criei um alias em .bashrc . No entanto, quando testo o comando, obtenho:

[rkahil@netmon3 ~]$ menu
-bash: menu: command not found

Aqui está o que eu tenho no arquivo .bashrc :

# Source global definitions

if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias menu='./menuScript.sh'
alias vi='vim'

O engraçado é que quando eu criei o alias vi , funcionou. Mas o menu não. Eu procurei por posts anteriores no UnixStackExchange e tentei seguir outros posts, mas sem sucesso. Alguém mais tem alguma sugestão?

    
por ryekayo 24.07.2014 / 21:31

5 respostas

8

Você deve tentar com alias menu='bash ./menuScript.sh' . Eu não estou atualmente em uma máquina Linux, então não posso testá-lo sozinho, mas deve funcionar. Quando você chama o alias, ele não sabe o que fazer com o caminho, então você deve incluir o bash no começo.

E a reinicialização do terminal ajuda depois de fazer a alteração.

    
por 24.07.2014 / 22:21
6

Quando você faz

alias menu='./menuScript.sh'

você cria um alias que diz "esse arquivo", mas não diz o que realmente faz com ele.

No entanto, se você fizer

alias menu='source ./menuScript.sh'

ou

alias menu='. ./menuScript.sh'

Você está dizendo executar esse arquivo.

    
por 27.07.2014 / 03:53
5

Você se lembrou de criar seu arquivo ~ / .bashrc depois de fazer as alterações? Porque as alterações entram em vigor no seu arquivo .bashrc depois de reiniciar o computador ou simplesmente fazer o sourcing do arquivo.

    
por 24.07.2014 / 21:37
0

O motivo pelo qual ele trabalhou com vim é porque esse é um programa já chamado sem um caminho direto. Você não precisa dizer explicitamente "Quero que isso seja executado como um programa" porque vim já é um. É embutido no sistema operacional que, quando receber o comando vim , vá e execute o arquivo /usr/bin/vi ou onde quer que o programa seja.

    
por 27.04.2017 / 21:21
0

Existem dois problemas com o alias

alias menu='./menuScript.sh'
  1. Requer que você esteja em um diretório específico quando invocar o alias. Se você estiver em um diretório em que menuScript.sh não existe, o alias não será executado.

    Seria melhor se você especificasse o caminho absoluto completo para o script menuScript.sh ao definir o alias, por exemplo,

    alias menu="$HOME/local/bin/menuScript.sh"
    

    ou similar.

  2. Como outros já disseram, outra razão pela qual o alias pode falhar é que o script não é executável ou que tem uma #! -line inválida. Certifique-se de que o script seja executável com

    chmod +x menuScript.sh
    

    e que a primeira linha do script é

    #!/bin/bash
    

    ou qualquer que seja o caminho para bash (ou qualquer shell para o qual o script tenha sido escrito) em seu sistema.

por 27.04.2017 / 22:09

Tags