Как использование тильды работает как ярлык для моего домашнего каталога?

Вы также можете подключить его вручную, используя mount in для экземпляра / mnt. Как

sudo mount -t cifs -o user=foobar,password=foobar,rw,hard,nosetuids,noperm,sec=ntlm //192.168.1.2/Drive ~/mnt/mount_point

(из того, как можно монтировать cifs-файлы в (k) ubuntu 13.04?)

1
задан 15 March 2016 в 04:47

3 ответа

Прочитайте документацию GNU для расширения Bash Tilde (как и раньше, до моей первой итерации этого ответа).

~/Desktop и ~j0h делают принципиально разные вещи, которые объясняет, почему ~Desktop не работает:

Обычная ~ заменяет вашу текущую переменную среды $HOME, заданную при входе в систему. Поэтому ~ разрешает мне /home/oli для меня, а ~/Desktop читается как /home/oli/Desktop. Здесь вы видите, что тильда используется больше всего. ~username разрешает дому этого пользователя, как установлено в /etc/passwd. Таким образом, ~oli разрешает /home/oli, ~j0h может решить /home/j0h, но не обязательно, ваш homedir может быть где угодно. ~not-a-username не разрешается. Поскольку Desktop не является пользователем, ~Desktop не заменяется. Это воспринимается буквально как файл или путь с именем ~Desktop (которого здесь нет).

И, разумеется, все это происходит удаленно (это было бы бесполезно в scp, если бы оно было заменено локальными значениями). Это работает, потому что Bash не будет заменять ~..., если ему предшествует что-либо, кроме пробелов.

21
ответ дан 23 May 2018 в 18:29
  • 1
    Что говорит getent passwd bin? – muru 5 August 2015 в 17:05
  • 2
    & Quot; бен & Quot; является системным пользователем на большинстве Linux-машин с домашним каталогом / bin. – fNek 5 August 2015 в 17:31
  • 3
    Невозможность расширения ~dir согласуется с документами GNU: «... символы в тильде-префиксе, следующие за тильдой, рассматриваются как возможное имя входа ... Если имя входа недействительно, или расширение тильды не выполняется, слово остается неизменным. " Здесь dir не является именем пользователя в этой системе, поэтому он остается неизменным. – apsillers 5 August 2015 в 17:56
  • 4
    Спасибо всем. Я должен, вероятно, прочитать ссылки, которые я пишу :) – Oli♦ 6 August 2015 в 10:30

Символ ~ используется как ярлык для /home/user в bash, поэтому в случае ~/Desktop/Volenteer.png это сокращение для /home/user/Desktop/Volenteer.png.

Итак, как вы можете видеть /, как всегда, показывает новый уровень в иерархии файловой системы.

4
ответ дан 23 May 2018 в 18:29
  • 1
    только половина права, его сокращение для переменной среды $ HOME. ~{user}/ может быть любым случайным путем, заданным файлом базы данных passwd (5). Хотя yes, стандарты filesytem.org помещают обычных пользователей в / home, это не относится к каждому пользователю (например, root in / root и сервисам в / var / ... или более старым unixies с использованием / usr вместо / home) – Dwight Spencer 5 August 2015 в 22:25
  • 2
    DwightSpencer является правильным. Я поддерживаю несколько серверов, в которых пользователи находятся в / usr / {CLIENTNAME} / home / и совместно используются несколькими внутренними и удаленными системами (все указывают на этот каталог), поэтому необходимо поддерживать только одну систему. И ~ указывает на этот каталог;) – Rinzwind 5 August 2015 в 23:26
  • 3
    @Rinzwind eek. Я должен протестовать против этого кощунственного злоупотребления /usr. – muru 6 August 2015 в 11:35
  • 4
    @muru hey, это был не мой вызов & gt;: - D Это было слева от SCO D: – Rinzwind 6 August 2015 в 11:41
  • 5
    Честно говоря, мне понравилось использование / usr для всех пользователей, поскольку это то, что изначально означало. То, что я нахожу в эти дни, тем более святотатственным злоупотреблением / usr / bin как грандиозной унифицированной свалки всех двоичных файлов (sys, user, sysop) вне базового binutils. В конце концов, / usr означало, что все пользователи имеют доступ к вытаскиванию с монтирования nfs, в то время как / usr / local было локальным пользовательским пространством с / sbin в качестве двоичных файлов sysop и / bin. Я получаю, что / home может быть другим разделом, но так может / usr / home / ... сохранение его в / usr сохраняет его как пространство имен пользователей как в политике, так и в реализации и мышлении. – Dwight Spencer 7 August 2015 в 17:41

~ является сокращением для переменной окружения $HOME на большинстве производных оболочки c / поддерживающих POSIX-оболочек. наиболее часто используемым для ~ является ссылка на ваш собственный домашний каталог или домашний адрес другого пользователя:

cd ~ # ie shell, take me to my home folder

cd ~root # i.e. shell, take me to root's home folder

Чтобы найти домашний каталог для любого локального пользователя в системе POSIX (UNIX, Linux, OS X, BSD), которая использует базу данных passwd (5) awk на /etc/passwd, например:

awk -F: '{ print $1,$(NF-1) }' /etc/passwd

В этом списке будут перечислены локальные пользователи и их домашний каталог.

4
ответ дан 23 May 2018 в 18:29

Другие вопросы по тегам:

Похожие вопросы: