Была та же проблема (, что и стоило, на OS X 10.11, стоковый bash 3.2.57, bash -завершение 1.3 через brew ). Следуя этому совету я расширил тильду в файле завершения ssh(/usr/local/etc/bash_completion.d/ssh
в моем случае или /etc/bash_completion.d/ssh
в противном случае )следующим образом:
_scp_local_files()
{
local IFS=$'\n'
local dirsonly=false
if [ "$1" = -d ]; then
dirsonly=true
shift
fi
cur="${cur/#\~/$HOME}" # <<< Expand tilde
if $dirsonly ; then
COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \
sed -e "s/$_scp_path_esc/\\\\&/g" -e '/[^\/]$/d' -e "s/^/$1/") )
else
COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \
sed -e "s/$_scp_path_esc/\\\\&/g" -e 's/[*@|=]$//g' \
-e 's/[^\/]$/& /g' -e "s/^/$1/") )
fi
COMPREPLY="${COMPREPLY/#$HOME/~}" # <<< Contract tilde
Я также обнаружил, что удобно сжимать тильду в конце, сохраняя пути красивыми и короткими (в том виде, в каком они были изначально введены ).
Программа, которая читает файл конфигурации, может делать с содержимым файла все, что захочет. То есть это полностью зависит от прихоти программиста. Нет ничего, что отделяло бы файл конфигурации от любого другого файла данных, большинство из которых, по крайней мере, в некоторой степени -специфичны для приложения. Итак, если бы я хотел, я мог бы сделать букву a
маркером комментария или объявить, что не -пробел в определенном столбце отмечает комментарий (, как в старых версиях Фортрана.).
Тем не менее, оба из них были бы совершенно неожиданными для любого пользователя, поэтому было бы лучше использовать #
или какой-либо другой часто используемый символ (, например;
). Но причиной использования #
является только из-за того, что он общий , а не потому, что Bash (или любая оболочка )имеет какое-либо непосредственное отношение к нему.
Как правило, большинство конфигурационных файлов не являются сценариями, даже если они могут содержать назначения, как в сценариях, или блоки фигурных скобок в стиле C -({... };
). Это хорошо для простоты, но, возможно, не для тех действительно крайних случаев, когда вам нужно сделать что-то ужасно сложное.
Но в некоторых случаях файл конфигурации может быть сценарием Bash, кодом Javascript, кодом Lua, кодом Python или чем-то еще. Например, файлы в /etc/default/
в Debian являются сценариями оболочки, они читаются сценариями инициализации различных программ (в любом случае до -времени systemd ). И если ваша программа реализована на Lua, то чтение Lua-скрипта в виде конфигурационного файла чрезвычайно просто реализовать.
Не существует категории под названием «файлы конфигурации», каждая программа и, соответственно, каждый программист может использовать все, что ему нравится. Я не знаю никаких источников,но я могу привести несколько примеров конфигурационных файлов, в которых используются различные символы (, просто выбрав один случайный пример для каждой категории):
#
:/etc/nfsmount
;
:/etc/php/php.ini
%
:/etc/slsh.rc
//
:/etc/java11-openjdk/security/policy/unlimited/default_local.policy
Это только те, которые я нашел после беглого просмотра /etc
. Я уверен, что вы также найдете где-нибудь файлы конфигурации в стиле python -, где комментарии могут быть либо #
, либо просто """
.
Так что нет, жесткого правила нет, все делают как хотят, но многие по умолчанию #
.