Символ тильды ~ не работает как ярлык домашнего каталога в Windows, в отличие от систем Unix. Я всегда использовал этот символ в качестве исходного пути в письменном тексте для всех операционных систем, и мне интересно, действительно ли это неправильно.

%USERPROFILE% может быть более подходящим, поскольку он может использоваться в качестве фактического ярлыка в проводнике Windows.

2 ответа2

3

Символ тильды может иметь совершенно другое значение в Windows, и я считаю его недействительным или, по крайней мере, двусмысленным, чтобы использовать его для ссылки на домашний каталог пользователя.

В файловых системах, которые не поддерживают длинные пути к файлам, тильда будет использоваться в качестве символа замены:

Под длинным именем файла понимается любое имя файла, которое превышает короткое соглашение по именованию в стиле MS-DOS (также называемое 8.3). Когда вы создаете длинное имя файла, Windows может также создать краткую форму имени 8.3, называемую псевдонимом 8.3 или коротким именем, и также сохранить ее на диске.

[...]

Во многих файловых системах имя файла будет содержать тильду (~) в каждом компоненте имени, которое является слишком длинным, чтобы соответствовать правилам именования 8.3.

Вы можете прочитать больше о 8.3 именах файлов в Википедии, которая является устаревшим соглашением об именах файлов, которое восходит ко временам DOS.

Тем не менее, современные программы могут действительно использовать ~ в качестве псевдонима для домашнего пользователя - например, PowerShell, см. Ответ @ Broam. И, конечно, есть разница между пользовательским типом, который интерпретируется оболочкой, и тем, что может выводить оболочка. Однако, поскольку вы не можете предполагать, что пользователи будут использовать PowerShell или быть знакомы с соглашениями Unix, я бы порекомендовал против этого.

1

В большинстве случаев вы правы (что безумно приятно, когда я работаю за компьютером).

Единственное исключение: PowerShell допускает использование символа ~ и он расширяется до вашего домашнего каталога, если вы используете завершение табуляции.

Сторонняя установка Bash (например, копия, поставляемая с Git) также поддерживает ~ .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .