Como faço para criar um alias Bash permanente?

Eu gostaria de criar um alias para rm comando a fim ter um mensagem de confirmação após ter executado este comando. Então, estou criando um alias como este alias rm='rm -i'. Mas, pelo que eu sei, este é um alias temporário e vive até você fechar o terminal.

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

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

Quando Eu corro ~/.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?

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

gedit ~/.bashrc

E, em seguida, adicione seu alias na parte inferior.

alt text

Agora execute . ~/.bashrc no seu terminal (deve haver um espaço entre o . e ~/.bashrc.

Agora você pode verificar seu alias.

alt text

Há muitas maneiras de criar um alias. As formas mais utilizadas são:

  1. Adicione aliases diretamente em seu ~/.bashrc arquivo

    Por exemplo: anexar essas linhas a ~/.bashrc arquivo

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

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

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

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

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

    Conteúdo do meu ~/.bash_aliases arquivo:

    alias cs='cd;ls'

Parece - me que seu único problema é simplesmente tentar executar .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 descartará esse ambiente quando ele sair, perdendo assim sua alteração. Ao obter o 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 é obrigatório, apenas recomendado manter suas alterações separadas e organizadas. Ele só é usado se existir, e você pode ver o teste para ele em .bashrc:

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

Isso diz que se o arquivo ~/.bash_aliases existe e, em seguida, execute-o.

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

Nota não há letra "X-executável" na primeira coluna (permissões de arquivo).

Os 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
echo "alias vps='ssh -X user@example.com'" >> ~/.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 X11 para que eu possa executar aplicativos gui como "gedit" pela rede.

>>Seja qual for o comando command / aliased, desta forma com a instrução echo, aspas e o símbolo para anexar a saída de um comando a um file () funciona para mim. Basta substituir meu comando pelo comando alias que você precisa e inseri-lo em seu terminal.

Escrevi esta função útil para criar rapidamente um novo alias e, em seguida, escrever a definição de alias para ~/.bash_aliases (se existir) ou ~/.bashrc.

DICA: Garantir ~/.bash_aliases existe & AMP; é executado em ~/.bashrc.

# -----------------------------------#  Create a new permanent bash alias##  @param $1 - name#  @param $2 - definition# -----------------------------------new-alias () {   if [ -z "$1" ]; then    echo "alias name:" && read NAME  else    NAME=$1  fi  if alias $NAME 2 > /dev/null > /dev/null; then    echo "alias $NAME already exists - continue [y/n]?" && read YN    case $YN in      [Yy]* ) echo "okay, let's proceed.";;      [Nn]* ) return;;      * ) echo "invalid response." && return;;    esac  fi  if [ -z "$2" ]; then    echo "alias definition:" && read DEFINTION  else    DEFINTION="$2"  fi  if [ -f ~/.bash_aliases ]; then    echo "alias $NAME=\"$DEFINTION\"" >> ~/.bash_aliases  else    echo "alias $NAME=\"$DEFINTION\"" >> ~/.bashrc  fi  alias $NAME="$DEFINTION"}

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

gem install aka2

uso

aka generate hello="echo helloworld" #add an aliasaka g hello="echo helloworld"  #add alias for lazy peopleaka destroy hello #remove aliasaka d hello #remove alias for lazy people

o rubygem irá auto-source seu arquivo dot para que você não precisa. Olha só.

Eu adoraria expandir essa ideia!

Você quer alias um comando de acordo com sua pergunta:

echo "alias wolfr='cd /home/wolf'">>./~bashrc

Agora você pode digitar wolfr para mover para o diretório home do wolf.

Isso é muito parecido e muito legal, o export comando:

echo "export ngse=/etc/nginx/sites-enabled"./~bashrc

Agora você pode digitar cp $ngse/my_file /destination_directory/destination_filename para copiar um arquivo do diretório habilitado para sites para um destino.

Nada disso funcionará até que você faça algo assim:

exec bash

Como alternativa, você pode registrar novamente ou reinicializar.

Eu sugeriria 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ê tem que reiniciar ou relogin.

Pelo que me lembro, bashrc tem, ou teve, uma linha sugerindo não usá-lo para aliases diretamente. O solucao é usar um(S) arquivo (s) externo (s). O foo e bar aliases foram adicionados, mas para adicionar baz o bashrc o arquivo deve ser "originado" (ou, basta abrir um novo terminal). Exemplo como:

thufir@dur:~$ thufir@dur:~$ aliasalias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'alias bar='echo foo'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias foo='echo foo'alias grep='grep --color=auto'alias l='ls -CF'alias la='ls -A'alias ll='ls -alF'alias ls='ls --color=auto'thufir@dur:~$ thufir@dur:~$ cat .bash_aliases alias foo='echo foo'alias bar='echo foo'alias baz='echo baz'thufir@dur:~$ thufir@dur:~$ source .bashrc thufir@dur:~$ thufir@dur:~$ aliasalias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'alias bar='echo foo'alias baz='echo baz'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias foo='echo foo'alias grep='grep --color=auto'alias l='ls -CF'alias la='ls -A'alias ll='ls -alF'alias ls='ls --color=auto'thufir@dur:~$ thufir@dur:~$ bazbazthufir@dur:~$ 

agora o baz o alias funciona. Só agora percebi que uma resposta anterior tinha prever esta técnica, mas eles tinham enterrado o lede.

** Resposta * * – How to find out where alias (in the bash sense) is defined when running Terminal in Mac OS X - Stack Overflow

‘alias rm =’ rm-i " não resolve o problema de usar rm ao acaso

e quanto ao Ubuntu em caras WSL ?