Возможно кому-то это конечно покажется очевидным и само собой разумеещимся, но вот я раньше этого не знал. Собственно о чем речь, спросите вы?
Постановка задачи:
Сделать автодополнение команд в баше после sudo, а так же возможность выполнения алиасов так же после sudo.
А в чем собственно проблема спросите вы? — Да ни в чем, если вам это не нужно, однако мне, живущему на Mac OS X, периодически приходится выполнять некоторые команды из под рута. А для этого как ни сложно догадаться, используется команда sudo. А поскольку Линуксоид я еще тот, то мне уже давным давно лень писать команды полностью, ведь есть TAB 🙂 Но по умолчанию автодополнение после написания sudo не работает.
Проблема номер два: это то что, после sudo так же не работают алиасы. Вот пример: у меня есть некоторое количество алиасов, среди них alias ll=’ls -l’. Вот что будет если вы попробуете выполнить:
> sudo ll
Решение:
Часть 1: Автодополнение. Делается это очень просто, все что нужно — это прописать в свой .bash_profile:
complete -cf sudo
После этого при следующем логине все заработает. Если не охота перелогиниваться, сделайте source ~/.bash_profile и оно заработает сразу 😉
Часть 2: sudo & alias. Здесь проблема заключается в том, что если баш видит первым словом команду — то дальше он не предполагает, что будет алиас.
Вот что собственно говорит по этому поводу Bash Info Manual:
If the last character of the alias value is a space or tab character, then the next command word following the alias is also checked for alias expansion.
Поэтому решение очень простое: прописываем себе в .bash_profile:
alias sudo=’sudo ‘
и все. Опять же при следующем логине все заработает. Если не охота перелогиниваться, сделайте source ~/.bash_profile и оно заработает сразу.
Ну вот и все.