Можно попытаться добавить обычного пользователя в некоторых группах как аудио, видео, если оно уже не присутствует.
] Причина, поскольку внутри двойных кавычек тильда []~[
] не имеет особого значения, она рассматривается как буквальная.[
]POSIX определяет []Double-Quotes[] как:[
] [] [] []Символы, заключенные в двойные кавычки ( "" ), должны сохранять буквальное значение всех символов в двойных кавычках, с указанием исключение из знаков знак доллара, обратная кавычка и обратный слеш[
] []...[
] []Заявка обеспечивает, чтобы двойной кавычке предшествовала двойная кавычка. обратный слеш для включения в двойные кавычки. Параметр '@' имеет специальное значение внутри двойных кавычек[
] [
] Кроме []$[], [] `[], [] \[] и []@[], другие символы рассматриваются как буквальные внутри двойных кавычек.[
].][]Тильдное расширение[] определяется POSIX как:[
] [] [] []Тильд-префикс состоит из []нецитируемого[] символа <тильда> в начале слова, за которым следуют все символы, предшествующие первому нецитируемому <слешу> в слове, или все символы в слове, если нет <слеша>. В задании можно использовать несколько тильд-префиксов: [...] после знака
] [в задании, после любого не заключенного в кавычки , или и того, и другого. [...] Если ни один из символов в тильд-префиксе не цитируется, то символы в тильд-префиксе, следующие за , рассматриваются как возможное имя для входа в систему из базы данных пользователей. [...] Если имя логина нулевое (т.е. tilde-prefix содержит только тильду), то tilde-prefix заменяется значением переменной HOME. Если HOME не задан, то результаты не указываются. [...][
]Так что самый короткий ответ - "потому что так определено": цитирование любого из символов в префиксе, включая []~[
], подавляет разложение.[
]Оно также определяет разложение, как всегда приводящее к одному слову, поэтому цитирование будет излишним:[
] [] [] []Путевое имя, полученное в результате разложения тильды, должно рассматриваться как цитируемое, чтобы оно не было изменено разбиением полей и разбиением полей. [
] [
]Если некоторый путь требует цитирования, но остальное является префиксом тильды, вы можете комбинировать тильдовое расширение и обычное цитирование прямо:[
] [$ cat ~/"file name with spaces"
]
[]К более широкому "почему": поскольку нет мыслимого использования для разделения слов []~[
], это должно быть поведением по умолчанию, а не требованием цитирования. Потому что нет необходимости заключать его в кавычки, придавая []~[
] особое значение внутри кавычек было бы ненужным осложнением. И, конечно же, исторические причины означают, что это не могло быть изменено сейчас, даже если бы это было желательно.[
~
происходит из C-оболочки, задолго до того, как она была добавлена в оболочку Korn, а затем добавлена в спецификацию оболочки POSIX.
В C-оболочке ~
был оператор глобуса (расширенный той же рутиной, что и, например, расширяющий *.txt
), так что, как и остальная часть глобуса, он не выполнялся в двойных кавычках.
Хотя это не дает ответа на вопрос, почему он разработан таким образом, вы используете вместо него $ HOME
, если вам нужно заменить, поскольку это, по сути, то, что ~
делает.
$ echo "$HOME/some/path"
/home/braiam/some/path