¿Cómo creo un alias de Bash permanente?

Me gustaría crear un alias para rm comando para tener un mensaje de confirmación después de ejecutar este comando. Así que estoy creando un alias como este alias rm='rm -i'. Pero hasta donde yo sé, este es un alias temporal y vive hasta que cierras la terminal.

Como se explica aqui para guardar el alias de forma permanente, necesito ejecutar ~/.bash_aliases o ~/.bashrc comandos en terminal y agregue mi alias allí. Pero cuando ejecuto ~/.bashrc Recibo el siguiente mensaje de error :

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

Cuando corro ~/.bash_aliases Recibo otro mensaje de error como este:

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

¿Cuál es el problema real y cómo puedo solucionarlo?

Para crear un alias, agréguelo de forma permanente a su .bashrc file

gedit ~/.bashrc

Y luego agrega tu alias en la parte inferior.

alt text

Ahora ejecuta . ~/.bashrc en su terminal (debe haber un espacio entre el . y ~/.bashrc.

Ahora puedes comprobar tu alias.

alt text

Hay muchas maneras de crear un alias. Las formas más utilizadas son:

  1. Agregue alias directamente en su ~/.bashrc file

    Por ejemplo: agregue estas líneas a ~/.bashrc file

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

    La próxima vez (después de que haya cerrado la sesión/iniciado sesión o haya terminado . ~/.bashrc) cuando escribe rm el rm -i se ejecutará el comando.

  2. El segundo método le permite crear un archivo de alias separado, por lo que no tendrá que colocarlos .bashrc, sino a un archivo de su elección. Primero, edita tu ~/.bashrc archivo y agregar las siguientes líneas, si no existe ya, o descomentar si ellos:

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

    Guárdelo y cierre el archivo. Después de eso, todo lo que tienes que hacer es crear un ~/.bash_aliases archive y agregue sus alias allí, con el mismo formato especificado en el primer método.

    Contenido de mi ~/.bash_aliases file:

    alias cs='cd;ls'

Me parece que tu único problema es simplemente intentar ejecutar .bashrc cuando no es ejecutable. Pero esta no es la forma correcta de hacerlo; cada vez que realice un cambio en este archivo, debe "ejecutarlo" con el comando:

source ~/.bashrc

De lo contrario, simplemente creará un nuevo shell, ejecutará el archivo en el entorno del nuevo shell y luego descartará ese entorno cuando salga, perdiendo así su cambio. Al obtener el script, se ejecuta dentro del shell actual, por lo que permanecerá vigente.

Supongo que el segundo error se debió a que bash_aliases no existe. No es obligatorio, solo se recomienda mantener los cambios separados y organizados. Solo se usa si existe, y puede ver la prueba en .bashrc:

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

Esto dice que si el archivo ~/.bash_aliases existe, luego ejecútelo.

El problema es que está intentando ejecutar un archivo no ejecutable:puede comprobarlo con:

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

Tenga en cuenta que no hay una letra "x - ejecutable" en la primera columna (permisos de archivo).

Los archivos de perfil no son archivos ejecutables, en lugar de ejecutarlos, los carga con:

source /home/bakhtiyor/.bashrc

o

. /home/bakhtiyor/.bashrc
echo "alias vps='ssh -X user@example.com'" >> ~/.bashrc

Este es un ejemplo que estaba buscando, una forma de escribir algunas letras en la terminal ("vps") para iniciar sesión de forma remota en un servidor y habilitar el reenvío X11 para poder ejecutar aplicaciones gui como "gedit" a través de la red.

>>Cualquiera que sea el comando / comando con alias, de esta manera con la instrucción echo, las comillas y el símbolo para agregar la salida de un comando a un file () funciona para mí. Simplemente reemplace mi comando por el comando de alias que necesita e ingréselo en su terminal.

Escribí esta útil función para crear rápidamente un nuevo alias y luego escribir la definición de alias en ~/.bash_aliases (si existe) o ~/.bashrc.

CONSEJO: Garantizar ~/.bash_aliases existe y se ejecuta en ~/.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"}

si está usando Ruby, puede 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

rubygem generará automáticamente su archivo dot para que no lo necesite. Compruébelo.

Me encantaría ampliar esta idea!

Quieres alias un comando de acuerdo a su pregunta:

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

Ahora puedes escribir wolfr para ir al directorio de inicio de wolf.

Esto es muy parecido y muy chulo, el export comando:

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

Ahora puedes escribir cp $ngse/my_file /destination_directory/destination_filename para copiar un archivo del directorio habilitado para sitios a un destino.

Nada de esto funcionará hasta que hagas algo como esto:

exec bash

Alternativamente, puede volver a iniciar sesión o reiniciar.

Yo sugeriría usar /etc/bash.bashrc

Puede agregar una línea al final de ese archivo.

alias ok="ping google.com"

Después de poner los alias por línea, debe reiniciar o volver a iniciar sesión.

Como recuerdo, bashrc tiene, o tenía, una línea que sugiere no usarla para alias directamente. El solución es usar un archivo(s) externo (s). El foo y bar se han añadido alias, pero para añadir baz el bashrc el archivo debe ser de "origen" (o simplemente abrir una nueva terminal). Ejemplo as:

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:~$ 

ahora el baz alias funciona. Recién ahora me di cuenta de que una respuesta anterior tenía indicado esta técnica, pero habían enterrado el lede.

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

‘alias rm=’ rm-i " no resuelve el problema de usar rm al azar

¿qué hay de Ubuntu en WSL guys ?