MVCE:
на bash 4.1.2
, Centos 6.10
(потому что мы монстры).
sudo command vim
возвращает
sudo: command: command not found
Я не понимаю, почему. на bash 4.4.23
, Mac OS High Sierra
работает как положено. Гуглить очень сложно, поскольку люди используют «команду» в качестве заполнителя для различных команд, о которых они говорят.
Актуальная проблема:
У меня есть функция (см. Ниже) с именем vim
, убирающая command
из его вызовов vim , не вызывающая ее сбой, как я и ожидал, в обоих bash 4.4 и 4.1.
У меня есть функция для автоматического sudo vim, если я не могу записать в файл:
vim() {
#only good for auto-sudo. delete if no sudo privileges.
if [[ "$#" -ne 1 ]]; then
command vim "$@"
#cases: if we can write to the file, or the file doesn't exist but we can make new files in that dir
elif [[ -w "$1" || ( -w $(dirname "$1") && ! -f "$1" ) ]]; then
# \vim or 'vim' only escape aliases, not functions
command vim "$1"
else
#this 'command' isn't required! It won't loop forever without it.
sudo env HOME="$HOME" command vim -u $HOME/.vim/vimrc "$1"
fi
}
Я ожидаю, что команда потребуется, поскольку в противном случае vim
должна ссылаться на выполненную мной функцию и вызывать себя до бесконечности. Тем не менее, он не только не требуется, как в системах CentOS, так и в Mac, но также вызывает сбой функции на устройстве CentOS!
Кто-нибудь может объяснить это поведение?
Есть ли удобный журнал изменений bash, на который я могу посмотреть, чтобы узнать, была ли "команда" каким-то образом реализована до bash 4.1? *