У меня есть доступ пользователя (без рута) к машине Linux (Suse), где я разработал несколько скриптов bash и соответствующие правила автозаполнения bash.
Поскольку сценарии принадлежат только моему пользователю, и поэтому мне нужны полные правила, только «активные» для меня (частично из-за того, что у меня нет /etc/bash_completion.d/
доступа с правами на запись root), размещение сценария bash_completion в папке не вариант.
На данный момент я назвал свой файл .bash_completion.myscript
и отправил его прямо из моего .bashrc
, но мне просто интересно, есть ли какой-нибудь другой «стандартный» способ достижения этих результатов, уже рассмотренный в реализации bash.
Например, создание папки /home/myuser/.bash_completion.d/
?
источник
.bash_completion
это файл, а не каталог. Такbash_completion.d
как это каталог, я предположил, что мог бы просто установитьscp
свой локальный каталогbash_completion.d
и переименовать его на удаленном сервере, но при следующем входе в систему он сказал, что это должен быть файл.Вот как у локального пользователя может быть рабочий
~/.bash_completion.d/
каталог.отредактируйте файл:,
nano ~/.bash_completion
добавьте следующее:сделать каталог:
mkdir ~/.bash_completion.d
отредактируйте файл:,
~/.bash_completion.d/myscript
добавьте следующее:источник .bash_completion:
. ~/.bash_completion
Обновить
Если вы ожидаете наличие пустой
~/.bash_completion.d/
директории и хотите избежать появления сообщения об ошибкеbash: /home/<username>/.bash_completion.d/*: No such file or directory
, добавьте проверку типа файла с помощью[ -f "$bcfile" ]
.источник
Ответ Рассел E Glaue является большим , но его
~/.bash_completion
неполно.Проблема в том, когда
~/.bash_completion.d/
пусто и впоследствииfor f in ~/.bash_completion.d/*
выводит следующее сообщение об ошибке:Самое простое, переносимое решение - пропустить цикл, если каталог пуст:
источник
Более простое решение - использовать опцию nullglob. Хотя это и не переносимо, ни bash-дополнения. Так что портативность не имеет значения.
Кроме того, вы хотите использовать кавычки вокруг переменной при поиске. Это обрабатывает случай, когда в файле есть пробелы и другие специальные символы.
источник
nullglob
), полезно для читателя.По крайней мере, в bash-complete 2.8 и более поздних версиях включена опция для размещения локальных Bash-завершений в каталоге.
Имена файлов завершения или имена символических ссылок должны соответствовать именам соответствующих команд. Эти дополнения загружаются только по запросу. Завершения, сохраненные в файле
~/.bash_completion
, загружаются всегда.Ссылка: см. "В. Где я должен установить свои локальные дополнения?" в https://github.com/scop/bash-completion/blob/master/README.md
источник