Как сказать bash не расширять псевдонимы

Я знаю, что существует простой синтаксис для bash не расширять псевдонимы. Тем не менее, Google не показывает, и мне лень читать man bash. Также ответ должен быть на этом сайте.

4 ответа

Решение

Поставьте обратную косую черту перед первым символом.

$ alias ls="echo foo"
$ ls
foo
$ \ls
bin
Desktop
Documents
  ...

Ты можешь использовать command встроенная команда оболочки. Он будет выполнять только команды, найденные в PATH или встроенные оболочки. Он не будет выполнять псевдонимы или функции оболочки.

Пример:

alias ls='ls -l'
$ ls
drwxr-xr-x 3 user user 4096 2010-10-11 13:17 dir1
drwxr-xr-x 3 user user 4096 2010-10-15 15:37 dir2
$ function ls() {
> echo hello
> }
$ ls
hello
$ command ls
dir1  dir2

Тип shopt -u expand_aliases в оболочку bash (ключ -u для unset). Я рекомендую прочитать справочную страницу для shopt.

Как уже предположил @bossNova, чтобы предотвратить расширение псевдонимов:

shopt -u expand_aliases

И для тех, кому интересно, установить расширение псевдонима:

shopt -s expand_aliases

Другие вопросы по тегам