
En un shell bash, ¿por qué no puedo crear un alias?
$ alias fooo="echo bac"
alias 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 egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
$ alias fooo='echo bac'
alias 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 egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
$ fooo
fooo: command not found
$ alias fooo
bash: alias: fooo: not found
En otro shell bash, los comandos anteriores logran crear un alias
$ alias fooo="echo bac"
$ fooo
bac
En el primer shell, si comienzo un nuevo shell (simplemente escribo bash
y presiono enter), o comienzo un nuevo shell de inicio de sesión (escribo bash -l
), los comandos anteriores también funcionan como en el segundo shell.
Respecto a la respuesta al alias
comando en el primer shell
$ which alias
$ whereis alias
alias:
$ builtin alias fooo="echo bac"
alias 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 egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
$ type alias
alias is a shell builtin
$ type -a alias
alias is a shell builtin
$ unalias alias
bash: unalias: alias: not found
Respecto al comentario echo
en el primer shell.
$ echo hello
hello
$ whereis echo
echo: /bin/echo /usr/share/man/man1/echo.1.gz
$ which echo
/bin/echo
Respuesta1
En el primer shell, cuando intentaste definir un alias, obtienes un resultado con los alias existentes. Esto está mal, no debería tener resultados como en el segundo shell. He reproducido el mismo problema si defino un nombre de alias llamado 'alias'.
Intente averiguar qué se ejecuta realmente, tal vez simplemente ejecute: builtin alias
o builtin alias foo="echo bar"
forzar el uso del comando alias.
Respuesta2
Tienes una función definida de esa manera en el primer shell:
alias(){ builtin alias ; }
type alias
debería confirmar esa hipótesis.