Intereting Posts
Как я могу войти в свой ноутбук с аутентификацией с открытым ключом? Не нужно было указывать имя входа во время установки, теперь оно спрашивает меня? В чем разница между / sys / block / sda1 / stat и / sys / block / xvda1 / stat? Инструменты, которые перечисляют прототипы в .so-библиотеке Включая Linux Mint при продаже оборудования? Где я могу найти, какие пакеты находятся на каждом компакт-диске Debian Squeeze? Вопрос о нескольких командах sed Как создать непостоянную виртуальную машину? Частота процессора не будет превышать 800 МГц на моем Dell XPS 13 с плющом выполнить ac prog в фоновом режиме с помощью сценария оболочки Каков наилучший способ использования набора сценариев обновления в fpm? Есть ли решение, когда система зависает на «переключении на clocksource tsc»? Могу ли я использовать время A | B для измерения времени, затраченного на запуск A | B? Как найти путь к файлу на основе его имени? Почему у меня есть другой отпечаток RSA при работе с несколькими приложениями с помощью ProxyCommand

Приятно игнорировать псевдонимы?

У меня есть alias rm='rm -i' в моем файле ~/.bashrc (я только что узнал, что некоторые считают его плохой практикой ).

Кажется, что псевдоним не учитывается при запуске с помощью nice :

 bli@naples:~$ touch test bli@naples:~$ rm test rm: remove regular empty file 'test'? n bli@naples:~$ nice rm test bli@naples:~$ 

Почему это так?

По умолчанию nice – это внешняя команда:

 $ command -v nice /usr/bin/nice 

Это означает, что он не знает псевдонимов, которые являются оболочкой:

 $ alias foo='echo hello' $ foo hello $ nice foo nice: foo: No such file or directory 

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

 $ alias nice='/usr/bin/nice ' 

Найдите это место в конце; это важно.

Теперь…

 $ nice foo hello $ command -v nice alias nice='/usr/bin/nice ' 

Любая внешняя команда может быть обернута таким псевдонимом, если вы хотите, чтобы оболочка выполняла расширение псевдонимов.

nice не bash . bash заменяет псевдонимы, а nice – нет. Использование псевдонимов – это только функция bash. И zsh, ksh, … так: функция оболочки. nice – это не оболочка.

nice будет использовать один из системных вызовов exec(3) , которые ничего не знают о псевдонимах оболочки. Глобальная замена псевдонимов может быть выполнена в некоторых оболочках (например, ZSH), хотя я считаю это таким массивным ножом, что я упоминаю его как предупреждение для следующих 10 поколений:

 % alias -g rm='rm -i' % echo hi rm there hi rm -i there %