Como eu crio um alias permanente do Bash?

308

Eu gostaria de criar um alias para o comando rm para ter uma mensagem de confirmação depois de executar este comando. Então, estou criando um alias como este alias rm='rm -i' . Mas até onde eu sei, isso é um alias temporário e vive até você fechar o terminal.

Como é explicado aqui para salvar alias permanentemente eu preciso executar ~/.bash_aliases ou ~/.bashrc comandos no terminal e adicione meu alias lá. Mas quando executo ~/.bashrc recebo a seguinte mensagem de erro:

bash: /home/bakhtiyor/.bashrc: Permission denied

Quando executo o ~/.bash_aliases , recebo outra mensagem de erro como esta:

bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.

Qual é o problema real e como posso resolvê-lo?

    
por Bakhtiyor 15.12.2010 / 08:54

8 respostas

343

Para criar um alias, adicione permanentemente o alias ao seu arquivo .bashrc

gedit ~/.bashrc

Em seguida, adicione seu alias na parte inferior.

Agoraexecute.~/.bashrcnoseuterminal(devehaverumespaçoentreo.eo~/.bashrc.

Agoravocêpodeverificarseualias.

    
por karthick87 15.12.2010 / 09:24
208

Existem muitas maneiras de criar o alias. As formas mais utilizadas são:

  1. Adicione alias diretamente no seu arquivo ~/.bashrc

    Por exemplo: anexe essas linhas a ~/.bashrc file

    alias ll='ls -l'
    alias rm='rm -i'
    

    Na próxima vez (depois de ter efetuado logout / in, ou feito . ~/.bashrc ) quando você digitar rm , o comando rm -i será executado.

  2. O segundo método permite criar um arquivo de aliases separado, para que você não precise colocá-los em .bashrc , mas em um arquivo de sua escolha. Primeiro, edite o arquivo ~/.bashrc e adicione ou descomente as seguintes linhas, se ainda não estiverem

    if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
    fi
    

    Salve e feche o arquivo. Depois disso, tudo o que você precisa fazer é criar um arquivo ~/.bash_aliases e adicionar seus aliases lá, com o mesmo formato especificado no primeiro método.

    Conteúdo do meu arquivo ~/.bash_aliases :

    alias cs='cd;ls'
    
por aneeshep 15.12.2010 / 09:21
17

O problema é que você está tentando executar um arquivo não executável: Você pode verificar isso com:

ls -la ~/.bashrc
-rw-r--r-- 1 username username 3596 2010-08-05 17:17 /home/pt001424/.bashrc

Note que não existe uma letra "x - executable" na primeira coluna (permissões de arquivo).

Arquivos de perfil não são arquivos executáveis, em vez de executá-los você os carrega com:

source /home/bakhtiyor/.bashrc

ou

. /home/bakhtiyor/.bashrc
    
por João Pinto 15.12.2010 / 11:24
15

Parece-me que o seu único problema é simplesmente tentar executar o .bashrc quando não é executável. Mas esta não é a maneira correta de fazer isso; sempre que você fizer uma alteração neste arquivo, você deve "executá-lo" pelo comando:

source ~/.bashrc

Caso contrário, ele simplesmente criará um novo shell, executará o arquivo no ambiente do novo shell e, em seguida, descartará esse ambiente quando sair, perdendo assim sua alteração. Ao fazer o sourcing do script, ele é executado dentro do shell atual, portanto permanecerá em vigor.

Estou assumindo que o segundo erro foi porque bash_aliases não existe. Não é necessário, apenas recomendado para manter suas alterações separadas e organizadas. Só é usado se existir, e você pode ver o teste em .bashrc:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Isto diz que se o arquivo ~ / .bash_aliases existir, então execute-o.

    
por Marty Fried 16.01.2012 / 21:29
8
echo "alias vps='ssh -X [email protected]'" >> ~/.bashrc

Este é um exemplo que eu estava procurando, uma maneira de digitar algumas letras no terminal ("vps") para fazer login remotamente em um servidor e habilitar o encaminhamento do X11 para que eu possa executar aplicativos gui como "gedit" sobre o rede.

Qualquer que seja o comando / comando com alias, desta forma com a instrução echo, aspas e o símbolo para anexar a saída de um comando a um arquivo (> >) funciona para mim. Basta substituir meu comando pelo comando alias necessário e inseri-lo no seu terminal.

    
por user80638 15.06.2013 / 13:39
5

Eu fiz essa pequena função para escrever rapidamente um novo alias para .bashrc

##------------------------------------ ##
 #           -- new-alias --           #
 # creates new alias & writes to file  #
 #          $1 = alias new             #
 #          $2 = alias definition      #
##------------------------------------ ##
new-alias () { 
  if [ -z "$1" ]; then
    echo "alias name:"
    read NAME
  else
    NAME=$1
  fi

  if [ -z "$2" ]; then
    echo "alias definition:"
    read DEFINTION
  else
    if [ "$2" = "-cd" ]; then
      DEFINTION='cd '
    else
      DEFINTION=$2
    fi
  fi

  echo "alias $NAME='$DEFINTION'" >> ~/.bashrc
  . ~/.bashrc
}
    
por blizzrdof77 17.12.2013 / 21:37
4

se você estiver usando ruby, você pode instalar o aka usando rubygem.

gem install aka2

uso

aka generate hello="echo helloworld" #add an alias
aka g hello="echo helloworld"  #add alias for lazy people

aka destroy hello #remove alias
aka d hello #remove alias for lazy people

o rubygem irá auto-source seu arquivo de ponto para que você não precisa. Confira.

    
por ytbryan 21.01.2015 / 15:14
0

Sugiro usar /etc/bash.bashrc

Você pode adicionar linha no final desse arquivo.

alias ok="ping google.com"

Depois de colocar os aliases por linha, você precisa reiniciar ou relogar.

    
por Fahad Ahammed 09.08.2015 / 05:36