Я пытаюсь изменить домашний каталог для Cygwin на компьютере на работе. Наши домашние каталоги по умолчанию привязаны к общему сетевому ресурсу. Кажется, это вызывает некоторую путаницу у Cygwin, так как он создал каталог на моем рабочем столе по тому же пути, что и общий сетевой ресурс, с другим префиксом, основанным на том, откуда я открываю cygwin.
Если я открою Cygwin из ярлыка по умолчанию, созданного при установке:
$ echo $HOME
/cygdrive/c/Users/shaun/Desktop/SERVER/USERS:USERS/SHAUN
Если я открою Cygwin из PowerShell:
$ echo $HOME
/usr/bin/SERVER/USERS:USERS/SHAUN
Я бы предпочел, чтобы мой домашний каталог находился в локальном каталоге программ, который я настроил для управления программами самостоятельно. Как это:
/cygdrive/c/users/shaun/apps/cygwin/home/shaun
Предпочтительный способ сделать это, как рекомендует cygwin, - сделать запись в /etc/nsswitch.conf
. Похоже, что это должно сделать это:
db_home: unix /%H/Apps/cygwin/home/shaun
Любые изменения, которые я внес в этот файл, казались проигнорированными. Я перезагружаю терминал, и даже когда я намеренно портю синтаксис, я не получаю ошибок. Некоторые из опций, которые я пробовал и потерпели неудачу:
db_home: /cygdrive/c/users/shaun/apps/cygwin/home/shaun
db_home: /%H/Apps/cygwin/home/shaun
db_home: unix /%H/Apps/cygwin/home/shaun
db_home: cygwin desc
db_home: cygwin /path /%H/Apps/cygwin/home/shaun
Я перезапускал процесс Cygwin после каждой попытки. Я также попытался изменить параметр db_shell
на /bin/sh
просто в качестве эксперимента, но оболочка не изменилась.
Предыдущие вопросы в StackExchange предлагали изменить файл /etc/passwd
, я смог заставить его работать только после того, как закомментировал блок кода в /etc/profile
который автоматически создавал каталог HOME. А потом, через некоторое время, он вернулся в старый дом.
Что-то мне не хватает в файле /etc/nsswitch.conf
? Похоже, это был бы простой и удобный способ настройки пользовательских конфигураций. Альтернативы кажутся устаревшими, которые не рекомендуются Cygwin, но если я ошибаюсь, дайте мне знать, какой метод предпочтительнее.
Мой текущий /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# This file is read once by the first process in a Cygwin process tree.
# To pick up changes, restart all Cygwin processes. For a description
# see https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch
#
# Defaults:
# passwd: files db
# group: files db
# db_enum: cache builtin
# db_home: /home/%U
db_home: /cygdrive/c/users/shaun/apps/cygwin/home/shaun
# db_shell: /bin/bash
# db_gecos: <empty>