Вопрос или проблема
Я хочу изменить домашний каталог пользователя, которого я изначально настроил в Windows Subsystem for Linux. Я нашел эту команду
sudo usermod -d /mnt/c/Users/Alex alex
Которая должна позволить это сделать, однако я получаю следующую ошибку
usermod: user alex is currently used by process 2
Видимо, потому что я вошел в систему как этот пользователь. Я попытался перейти в root, выполнив sudo su -
, а затем запустить команду снова, но я получаю ту же проблему. Я попробовал команду, найденную в Google, чтобы выйти из пользователя alex
из root, но это также выкинуло меня из bash полностью.
Какие-нибудь предложения?
Изменение домашнего каталога в WSL осуществляется так же, как и в Linux:
- Введите bash
- Впишите команду
sudo vim /etc/passwd
- Найдите строку вашей учетной записи, которая может выглядеть как:
harry:x:1000:1000:"",,,:/home/harry:/bin/bash
- Измените домашний каталог, который выше указан как
/home/harry
, на новый каталог, используя нотацию WSL (Если вы хотите установить директорию Windows как домашнюю, вам нужно предварять ее/mnt/
, например,/mnt/c
для C:/,/mnt/d
для D:/ и т.д.) - Сохраните файл и выйдите из vim, напечатав
:wq
и нажав Enter - Выйдите из bash и запустите его снова
- Для проверки используйте команды:
cd ~
pwd
Дайте знать, если вам нужна дополнительная информация.
На 2021 год есть лучший способ зайти в систему как root и изменить домашний каталог пользователя:
- Нажмите
Win + R
- Введите
cmd /C wsl -u root
- Откроется терминал root, и теперь вы можете использовать команду
usermod -d <path> <user>
без проблем (например,usermod -d /mnt/c/Users/Alex alex
)
Вы можете попробовать выполнить lxrun /setdefaultuser root
в командной строке, затем изменить каталог, а затем изменить пользователя по умолчанию на Alex.
Чтобы избежать отображаемой ошибки (“пользователь … в настоящее время используется процессом”): пользователь не должен быть войден в WSL VM.
- в VM: отредактируйте /etc/wsl.conf, чтобы изменить пользователя по умолчанию с “пользователя, который будет переименован” на root
- выйдите из VM
- завершите VM: wsl -t my_vm
- выполните команду: wsl -d my_vm -e usermod …добавьте_свои_аргументы_здесь…
- “откат” пункта #1 (с root на “новое имя пользователя”).
Когда используете ответ @harrymc вам нужно скопировать .bashrc в ваш новый домашний каталог.
cp <old_bashrc> ~
.
Ответ или решение
Изменение домашнего каталога пользователя в Windows Subsystem for Linux
Теория
Windows Subsystem for Linux (WSL) предоставляет возможность запускать Linux-дистрибутивы непосредственно на Windows, что существенно облегчает работу разработчиков и позволяет использовать множество утилит Linux. Однако, при настройке WSL могут возникать сложности, такие как изменение домашнего каталога пользователя. Домашний каталог — это директория, в которой хранятся файлы и настройки пользовательского окружения. Иногда необходимо изменить его местоположение, чтобы, например, использовать каталог на разделах Windows или располагать данные в более удобном или безопасном месте. Поскольку WSL работает с дистрибутивом Linux, изменение домашнего каталога пользователя осуществляется аналогично изменению в любом Linux-системе.
Пример
В описанном сценарии пользователь сталкивается с ошибкой при попытке изменить домашний каталог с помощью команды:
sudo usermod -d /mnt/c/Users/Alex alex
Ошибочное сообщение:
usermod: user alex is currently used by process 2
Эта ошибка указывает на то, что пользователь "alex" в данный момент активно используется в рамках WSL-сессии. Это частая проблема, так как многие операции требуют, чтобы пользователь не был активен в системе при выполнении изменений, касающихся его учетной записи.
Применение
Для решения задачи рекомендуется следовать определенной последовательности действий:
-
Запуск командной строки WSL с правами root:
- Используя комбинацию клавиш
Win + R
, откройте окно выполнения и введитеcmd /C wsl -u root
. Это действие откроет терминал WSL с правами root, минуя авторизацию под пользователем alex, что помогает избежать ошибок, связанных с активными процессами.
- Используя комбинацию клавиш
-
Изменение домашнего каталога:
- В открывшемся окне терминала выполните команду
usermod -d /mnt/c/Users/Alex alex
. Эта команда изменяет домашний каталог пользователя "alex" на указанный путь в файловой системе Windows (в WSL-представлении).
- В открывшемся окне терминала выполните команду
-
Обновление конфигурации WSL:
- Выйдите из WSL, отредактировав файл
/etc/wsl.conf
, установите пользователя по умолчаниюroot
. Для этого добавьте в файл следующие строки:[user] default=root
- Выйдите из WSL, отредактировав файл
-
Перезагрузка WSL:
- Завершите все процессы WSL командой
wsl -t <имя_вашего_дистрибутива>
. Это действие полностью закроет все активные сессии и освободит ресурсы. - Снова запустите WSL, теперь уже с изменённой конфигурацией, что позволит применить изменения.
- Завершите все процессы WSL командой
-
Проверка изменений:
- После повторного входа в WSL убедитесь, что изменение прошло успешно. Выполните команды
cd ~
иpwd
, чтобы удостовериться, что переход в домашний каталог осуществляется корректно к новому назначенному местоположению.
- После повторного входа в WSL убедитесь, что изменение прошло успешно. Выполните команды
-
Возвращение пользователя "alex" в качестве пользователя по умолчанию:
- Верните изменения в файл
/etc/wsl.conf
, чтобы обратно установить пользователем по умолчанию "alex". Таким образом, при последующих запусках WSL сразу будет использоваться корректно настроенный пользователь.
- Верните изменения в файл
-
Копирование важных конфигурационных файлов:
- Не забудьте скопировать все необходимые конфигурационные файлы из старого домашнего каталога в новый. Например, можно использовать команду:
cp /home/harry/.bashrc ~
- Это сохранит все пользовательские настройки оболочки, что важно для комфортного использования системы.
- Не забудьте скопировать все необходимые конфигурационные файлы из старого домашнего каталога в новый. Например, можно использовать команду:
Применение данных шагов обеспечит успешное изменение домашнего каталога без привычных проблем, связанных с активными процессами. Пользователь сможет использовать измененный путь и извлекать преимущества интеграции WSL с файловой системой Windows.
Эти действия подчеркивают гибкость и функциональность WSL, позволяя пользователям Linux и Windows эффективно работать в смешанной среде.