Почему я не могу создать псевдоним в оболочке bash?

Почему я не могу создать псевдоним в оболочке bash

$ 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

В другой оболочке bash вышеуказанные команды успешно создают псевдоним

$ alias fooo="echo bac"
$ fooo
bac

В первой оболочке, если я запускаю новую оболочку (просто введите bash и нажмите Enter) или запустите новую оболочку входа в систему (введите bash -l ), вышеуказанные команды также будут успешными, как и во второй оболочке.


Что касается ответ на команду alias в первой оболочке

$ 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

Относительно комментария к echo в первой оболочке

$ echo hello
hello

$ whereis echo
echo: /bin/echo /usr/share/man/man1/echo.1.gz

$ which echo
/bin/echo
-2
18.12.2016, 07:39
2 ответа

В первой оболочке, когда вы пытаетесь определить псевдоним, вы получаете вывод с существующими псевдонимами. Это неправильно, у вас не должно быть вывода, как во второй оболочке. Я воспроизвел ту же проблему, если определил псевдоним под названием 'alias'.

Попытайтесь узнать, что на самом деле выполняется, может быть, просто выполните: встроенный псевдоним или встроенный псевдоним foo = "echo bar" , чтобы принудительно использовать команду псевдонима.

4
28.01.2020, 05:14

У вас есть функция, определенная таким образом в первой оболочке:

alias(){ builtin alias ; }

псевдоним типа должен подтвердить эту гипотезу.

1
28.01.2020, 05:14

Теги

Похожие вопросы