Команда which
возвращает только исполняемые файлы: она ничего не знает о псевдонимах, так как она является внешней программой, и механизм передачи информации о псевдониме дочернему процессу отсутствует.
Если вы введете команду, type -a cp
вы увидите все возможные интерпретации в порядке предпочтения. Это включает любой псевдоним, так type
как является bash
внутренней командой.
Важно понимать, что псевдоним не будет интерпретироваться подпроцессом, таким как сценарий или интерактивный редактор, который имеет возможность запускать системные команды.
Если вы сделаете cp
функцию, то ваша версия будет работать в скриптах, но не из других программ:
cp() { /usr/local/bin/gcp "$@"; }
Если вы хотите, чтобы ваш cp
работал везде, добавьте $HOME/bin
в начало PATH
списка и $HOME/bin/cp
укажите на него:
ln -s /usr/local/bin/gcp $HOME/bin/cp
Это делает символическую ссылку, хотя вы можете сделать ее несколько более эффективной жесткой ссылкой (опустить -s
), но для этого обычно требуются права доступа root ( sudo ln ...
). Создание функции и добавление в PATH
переменную будет выполнено в одном из bash
сценариев запуска с разрешениями пользователя.