Описанное вами поведение, вероятно, вызвано завершением bash -.
(То, что следует ниже, основано на текущей версии пакета (2.9 ), но оно будет достаточно точным и для имеющейся у вас версии 2.1 ).
bash -завершение предоставляет набор спецификаций завершения,(compspec ), которые библиотека Readline использует для завершения слов, передаваемых в качестве аргументов для команд в Bash. Они определяются с помощью встроенной командыcomplete
, обычно в виде:
complete -F function command
Для встроенной функции export
функция _export
определена в /usr/share/bash-completion/completions/export
.
Когда слово для завершения включает (или заканчивается на )=
, _export
пытается завершить его (часть справа от первой =
, на самом деле )как имя файла или каталога; когда слово для завершения не включает =
, оно пытается завершить его как имя переменной. Поскольку библиотека Readline запускает новое завершение каждый раз, когда встречается с одним из символов, перечисленных в переменной COMP_WORDBREAKS
(, если только символ не экранирован ), который обычно включает :
, завершение перестает работать после первого двоеточия. вы добавляете к значению переменной, потому что в этот момент слово для завершения больше не включает (или не заканчивается на )на =
.
(Кстати, обратите внимание, что завершение имени файла/каталога снова начинает работать, если вы напишете export myvar=/usr/:othervar=
и нажмете Tab).
Дополнение bash -действительно имеет собственный механизм для обработки особых случаев. Например, :
правильно обрабатывается спецификацией compspec для scp
, которая интерпретирует то, что находится справа от двоеточия, как удаленный путь. Однако то же самое не относится к export
.
Поведение Readline по умолчанию , которое запускается, когда спецификация для текущей команды не найдена, в конечном итоге заключается в попытке завершения имени файла.Вот почему завершение path2
в export var=/path1/:/path2/
работает, когда дополнение bash -не установлено или отключено иным образом (помните, что каждое двоеточие запускает новое завершение ).
Что же ты можешь сделать? У вас есть несколько альтернатив:
Отправьте запрос функции на bash -завершение на GitHub .
Определите собственную функцию завершения для export
.
Во-первых, скопируйте compspec в файл завершения пользователя (, который, скорее всего, еще не существует ):
$ cat /usr/share/bash-completion/completions/export >>~/.bash_completion
Затем отредактируйте ~/.bash_completion
, заменив complete -F _export export
на complete -F _export -o default export
. Это указывает Readline попытаться выполнить завершение по умолчанию, когда конкретная спецификация export
не дает результатов.
Используйте автодополнение по умолчанию вместо того, которое предоставляется автодополнением bash -.
Добавьте в свой~/.bashrc
:
complete -o default -o bashdefault export
(Предложение из bash -FAQ по завершению). Недостатком является то, что вы теряете возможность заполнять имена переменных и опции export
.
Если вы хотите достаточно хорошо ознакомиться с дополнением bash -, определите свою собственную функцию _export
, как в (2 ), отредактировав предоставленную функцию, чтобы она специально обрабатывала :
.
systemd по умолчанию находится в автоматическом режиме и не нуждается в fstab для активации:
systemd-gpt-auto-generator is a unit generator that automatically discovers root, /home/, /srv/, /var/, /var/tmp/, the EFI System Partition, the Extended Boot Loader Partition and swap partitions
Этот генератор можно замаскировать в отдельном каталоге переопределения администратора:
/etc/systemd/system-generators/systemd-gpt-auto-generator -> /dev/null
systemd.gpt_auto=no
в качестве параметра загрузки должен иметь тот же эффект.
Продолжение справочной страницы:
systemd-gpt-auto-generator is useful for centralizing file system configuration in the partition table and making configuration in /etc/fstab or on the kernel command line unnecessary.
fstab-generator
идет вторым/может переопределить. Но поскольку вы заменили комментарий, я думаю, gpt -auto включает его.
sda3
еще не установлен . lsblk
работает как fdisk -l
на уровне раздела. Запись [SWAP]
похожа на точку монтирования.
Попробуйте swapon --show
, потому что могут быть также файлы подкачки и несколько подкачек.
Вам необходимо изменить vm.swappiness параметр ядра linux и навсегда внести изменения в файл /etc/sysctl.conf . И перезагрузите систему.
Значение по умолчанию vm.swappiness равно 60 , а представляет собой процент свободной памяти перед активацией подкачки . Чем ниже значение, тем меньше используется подкачки и тем больше страниц памяти хранится в физической памяти.
Для постоянного отключения подкачки в вашей системе Debian:
# edit /etc/sysctl.conf file
~] vi /etc/sysctl.conf
# disable swap
# add to end of file if not present:
vm.swappiness = 0
# reboot for changes
~] systemctl reboot
Вот руководство , как навсегда отключить подкачку в Linux .