Новый псевдоним, недоступный после;

До сих пор я думал, что точка с запятой в оболочке (каким-то образом) имеет то же значение, что и разрыв строки. Поэтому я был удивлен тем, что для

alias <name>=<replacement text>; <name> 

<name> неизвестно, пока оно известно в следующей строке. csh , tcsh , sh , ksh и bash ведут себя одинаково. По крайней мере, для csh не имеет значения, используется ли псевдоним напрямую или если скрипт получен до семхлолона – псевдонимы не известны ; но они известны в следующей командной строке. Это ошибка или это поведение предназначено?

  • Является ли наложение псевдослучайной команды на ядро?
  • Какие команды имеют параметр -h для чтения человеком и как его включить по умолчанию с переменной w / env?
  • псевдоним? не работает в zsh
  • как добавить параметр в bash alias без пробела между ними?
  • как создать постоянный псевдоним из скрипта
  • Есть ли способ сделать расширение псевдонимов внутри, если ... fi на Bash?
  • Получить исполняемый файл для любой команды
  • Псевдоним для перечисления верхнего файла и потребления каталога - самый короткий путь?
  • 2 Solutions collect form web for “Новый псевдоним, недоступный после;”

    Синтаксис псевдонима, который вы используете, не подходит для оболочки POSIX, для оболочки POSIX вам необходимо использовать:

     alias name='replacement' 

    Но для всех оболочек это не может работать, поскольку замена псевдонима выполняется на ранней стадии анализатора.

    Прежде чем выполнить настройку псевдонима, вся строка была прочитана синтаксическим анализатором, и по этой причине ваша командная строка не будет работать.

    Если псевдоним появится в следующей командной строке, он будет работать.

    Это поведение предназначено и задано POSIX под псевдонимом Substitution .

    Псевдоним был заменен сразу после того, как оболочка выполнила распознавание токена и до применения любых правил грамматики . В то время, когда вы вызвали псевдоним <name> , alias команды не был выполнен.

    Linux и Unix - лучшая ОС в мире.