6

Возможно, это не связано с программированием, но я хочу сослаться на этот каталог в программе c.

Я думал, что это $ HOME, но когда я сбросил $ HOME, я все еще могу cd ~/ в bash.

Это также не дом $ USER, так как я могу получить root с USER = "another", но «~/" по-прежнему указывает на "/root".

так как bash объясняет это "~/"?

5 ответов5

15

Использование информации о домашнем каталоге из /etc/passwd (6-е поле).

2

Это $HOME , но изменение его значения не повлияет на расширение. Смотрите эту ссылку для получения дополнительной информации.

2

Возможно, это не связано с программированием, но я хочу сослаться на этот каталог в программе c.

Если вы попытаетесь открыть строковый литерал "~/" в C, вы обнаружите, что он не существует. Это сокращенная запись Bash/Csh, которая расширяется оболочкой до домашнего каталога. Он не существует как таковой в файловой системе, и поэтому программа на С не будет работать, если, например, не вызовет Bash и не позволит Bash расширить строку.

1

Bash Hackers Wiki - Документация - Расширение Tilde:

Расширение тильды используется для расширения до нескольких конкретных путей:

  • домашние каталоги
  • текущий рабочий каталог
  • предыдущий рабочий каталог
-3

Оболочка интерпретируется как home-dir. это "ключевое слово"

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