bash
имеет внутреннюю команду, называемую kill
, а также в Linux есть внешняя команда (программа), называемая kill
.
При выполнении kill
в выполняется bash
внутренняя команда .kill
У меня два вопроса:
- Есть ли настройка, которую я могу изменить, чтобы внешняя команда выполнялась вместо внутренней по умолчанию (конечно, без указания полного пути к внешней команде).
- Является ли стандартным поведением выполнение внутренней команды вместо внешней по умолчанию во всех (основных) оболочках, или это просто особенность
bash
?
решение1
Используйте
env
для его вызова.$ env kill kill: not enough arguments $ kill kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
Все оболочки и командные процессоры.
решение2
На ваш первый вопрос: да, есть настройка, позволяющая по умолчанию выполнить внешнюю команду вместо внутренней.
Вы можете отключить встроенную функцию
enable -n COMMAND
Вы можете включить встроенную функцию
enable COMMAND
или вы можете изменить приоритет команды. Приоритет команды bash:
- псевдоним, это самый высокий
- функция
- встроенный
- внешняя команда в $PATH
На ваш второй вопрос: я думаю, вы всегда можете предположить, что внутренняя команда предшествует внешней команде. Это касается не только bash.