Цикл псевдонима в csh

Для CentOS похоже, что Вы добавляете PEERDNS=no кому: /etc/sysconfig/network-scripts/ifcfg-eth0 (см. документацию).


Более в общем iIf Вы используете dhclient затем поместите следующее в свой dhclient.conf файл:

interface "eth0" {
 supersede domain-name-servers 8.8.4.4, 8.8.8.8;
}

Для dhcpcd Вы добавляете -R опция к командной строке для остановки его изменение /etc/resolv.conf.

Наконец pump использование -d опция на командной строке для остановки его изменение /etc/resolv.conf.

2
09.01.2012, 23:44
2 ответа

Кажется, что, когда имя псевдонима является также первой командой, оно не интерпретируется как псевдоним, но кроме того это. Это может работаться вокруг с полным путем:

alias df 'printf "\n"; /bin/df -hP | column -t'

Или, как Keith указал в комментарии и ответе, \ предотвращает расширение псевдонима:

alias df 'printf "\n"; \df -hP | column -t'
5
27.01.2020, 21:50

Это объяснено в tcsh странице справочника (я подозреваю, что Вы используете tcsh, не csh); см. третий заключенный в кавычки абзац.

Оболочка ведет список псевдонимов, которые могут быть установлены, сброшены и распечатаны командами непсевдонима и псевдонимом. После того, как командная строка анализируется в простые команды (см. Команды), первое слово каждой команды, слева направо, проверяется, чтобы видеть, имеет ли это псевдоним. Если так, первое слово заменяется псевдонимом. Если псевдоним содержит ссылку истории, он подвергается замене Истории (q.v). как будто исходная команда была предыдущей входной строкой. Если псевдоним не содержит ссылку истории, список аргументов оставляют нетронутым.

Таким образом, если бы псевдоним для 'ls' был 'ls-l' команда 'ls/usr', то стал бы 'ls-l/usr', список аргументов, здесь являющийся без помех. Если псевдоним для 'поиска' был 'grep! ^/etc/passwd' затем 'счет поиска' стал бы 'grep счетом/etc/passwd'. Псевдонимы могут использоваться для представления метасинтаксиса синтаксического анализатора. Например, 'исказите печать 'PR! * | lpr'' определяет ''команду'' ('печать') который PR (1) с его аргументы построчному принтеру.

Замена псевдонима повторяется, пока первая команда не имеет никакого псевдонима. Если замена псевдонима не изменяет первое слово (как в предыдущем примере), это отмечается для предотвращения цикла. Другие циклы обнаруживаются и вызывают ошибку.

Хорошее обходное решение должно предшествовать команде с a \ символ для запрещения расширения псевдонима:

alias df 'printf "\n"; \df -hP | column -t'
6
27.01.2020, 21:50
  • 1
    Правило является тем же в плоскости csh и теми же работами обходного решения. –  Gilles 'SO- stop being evil' 10.01.2012, 03:15
  • 2
    , который я должен проверить, но я вполне уверен, это - csh (старая установка) –  vol7ron 10.01.2012, 07:20

Теги

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