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

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

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

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

  • Как я могу получить размер файла в сценарии bash?
  • Как псевдоним команды, содержащей как апострофы, так и кавычки?
  • GNU Parallel: немедленно отображает задание stderr / stdout по порядку по заказу
  • Как добавить несколько строк в файл
  • Добавление чрезвычайно больших чисел в сценарий оболочки
  • Проверить аргумент перед запуском программы
  • Удаление каталога из PATH
  • Как проверить, пуст ли файл или имеет только пустые символы?
  • Показывать вывод команды, запускаемой внутри экрана, если она выходит с ошибками
  • Единая команда для перемещения домена из локальных областей cPanel в файл remotedomains?
  • Клавиша со стрелкой / Ввод меню
  • Разница между «trap -⁠-EXIT» и «trap-EXIT»
  • 2 Solutions collect form web for “Новый псевдоним, недоступный после;”

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

     alias name='replacement' 

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

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

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

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

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

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