Команда 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
), но для этого обычно требуются права суперпользователя (sudo ln ...
). Создание функции и добавление в переменную PATH
будет выполняться в одном из сценариев запуска bash
с разрешениями пользователя.