%20%D0%BD%D0%B5%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D0%BF%D0%BE%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC%D1%83%20%D0%BF%D1%83%D1%82%D0%B8%20%24HOME.png)
Я установилCygWinверсия 1.7.28.
Проблема быстро объяснена: В принципе, при запуске оболочки CygWin через удаленный вход в систему,$ДОМОЙне там, где должен, со всеми вытекающими (плохими) последствиями. Локальные консоли работают нормально.
А теперь оподробности:
Если в графическом интерфейсе (Windows XP) я делаю:
c:\CygWin\bin\bash.exe --login -i
или (практически то же самое):
c:\CygWin\Cygwin.bat
Я начинаю с правильного$ДОМОЙсо всеми моими файлами конфигурации:
LuisRivas@portatilacer ~
$ pwd
/home/LuisRivas
LuisRivas@portatilacer ~
$ ls .* -la
-rw------- 1 LuisRivas Ninguno 108 mar 3 14:34 .bash_history
-rwxr-xr-x 1 LuisRivas Ninguno 1494 mar 3 03:00 .bash_profile
-rwxr-xr-x 1 LuisRivas Ninguno 6127 mar 3 14:28 .bashrc
-rwxr-xr-x 1 LuisRivas Ninguno 1919 mar 3 03:00 .inputrc
-rwxr-xr-x 1 LuisRivas Ninguno 1236 mar 3 03:00 .profile
$ echo $HOME
/home/LuisRivas
Но если я войду через SSH (SSH-сервер Bitvisev6 установлен на Windows XP SP3) и я повторяю процесс (тот же пользователь):
c:\CygWin\bin\bash.exe --login -i
СейчасОболочка Башначинается не там, где следует:
LuisRivas@portatilacer ~
$ echo $HOME
/cygdrive/c/Documents and Settings/LuisRivas
LuisRivas@portatilacer ~
$ pwd
/cygdrive/c/Documents and Settings/LuisRivas
LuisRivas@portatilacer ~
$ ls .* -la
-rw-------+ 1 LuisRivas Ninguno 197 mar 3 14:36 .bash_history
.:
total 1211
drwxrwx---+ 1 Administradores SYSTEM 0 mar 3 14:30 .
drwxrwxr-x+ 1 Administradores SYSTEM 0 mar 1 04:06 ..
-rw-------+ 1 LuisRivas Ninguno 197 mar 3 14:36 .bash_history
drwx------+ 1 LuisRivas Ninguno 0 mar 3 14:12 Configuración local
drwx------+ 1 LuisRivas Ninguno 0 dic 25 15:41 Cookies
drwx------+ 1 LuisRivas Ninguno 0 mar 3 14:17 Datos de programa
drwx------+ 1 LuisRivas Ninguno 0 dic 25 13:56 Entorno de red
drwx------+ 1 LuisRivas Ninguno 0 dic 25 13:56 Escritorio
drwx------+ 1 LuisRivas Ninguno 0 mar 3 14:12 Favoritos
drwx------+ 1 LuisRivas Ninguno 0 mar 3 14:02 IETldCache
drwx------+ 1 LuisRivas Ninguno 0 dic 25 13:56 Impresoras
drwx------+ 1 LuisRivas Ninguno 0 dic 25 13:56 Menú Inicio
drwx------+ 1 LuisRivas Ninguno 0 mar 3 14:12 Mis documentos
-rwx------+ 1 LuisRivas Ninguno 786432 mar 3 14:17 NTUSER.DAT
-rwx------+ 1 LuisRivas Ninguno 1024 mar 3 14:34 NTUSER.DAT.LOG
-rwxrwx---+ 1 Administradores SYSTEM 192 mar 3 14:03 ntuser.ini
drwx------+ 1 LuisRivas Ninguno 0 dic 25 15:33 Plantillas
drwx------+ 1 LuisRivas Ninguno 0 mar 3 14:12 Reciente
drwx------+ 1 LuisRivas Ninguno 0 mar 3 14:12 SendTo
То есть:CygWinзапустил оболочку в моем домашнем каталоге Windows, поэтому у меня нет моих персонализаций (.bashrc,.bash_profile... и т. д.), например псевдонимы.
Может быть, это странное поведение вызвано какой-то отсутствующей переменной окружения (которая есть в GUI, но не на удаленной консоли), но я не смог ее найти.
Как мне сделать, чтобы моя удаленная консоль запустилаОболочка Башвключен вCygWinгде и должно быть?
- EDIT: вот некоторые дополнительные данные по запросу:
В местном Bash Shell:
LuisRivas@portatilacer ~
$ id
uid=1004(LuisRivas) gid=513(Ninguno) grupos=513(Ninguno),0(root),544(Administradores),545(Usuarios)
В удаленной оболочке Bash (ничего не изменилось):
LuisRivas@portatilacer ~
$ id
uid=1004(LuisRivas) gid=513(Ninguno) grupos=513(Ninguno),0(root),544(Administradores),545(Usuarios)
А это содержимое /etc/passwd (показана только строка пользователя «LuisRivas»):
LuisRivas@portatilacer ~
$ cat /etc/passwd
[Lines not needed (I think)]
LuisRivas:unused:1004:513:U-PORTATILACER\LuisRivas,S-1-5-21-789336058-1957994488-1417001333-1004:/home/LuisRivas:/bin/bash
[Lines not needed (I think)]
ПРАВКА 2: В первом письме я ошибся: файл.bashrcна начальном пути (где бы этот путь ни находился) читается ОКCygWinпри запуске оболочки. Эта информация теперь удалена.
EDIT 3: Мои тесты были сделаны только на удаленных входах SSH, а не Telnet. Так возникла проблема: именно из-за некоторого поведения Bitvise SSH Server (читайте ответ ниже).
решение1
Проблема в нескольких словах:SSH-сервер Bitvise(Windows) добавляет (предположительно нелогичную; кажется, ненужную) переменную окружения%ДОМ%что равно%ДОМОЙ ПУТЬ%.
Решение: возможность управления переменными среды, которые Bitvise SSH Server добавляет к каждому SSH-клиенту (Шпатлевка, классическая командная строка GNUSSH... и т.д.). Насколько я знаю, в программе такой функции нет. Буду искать дальше.
Обходные пути:
ПозвонитеОболочка Башчерез.cmdфайл, который сначала удаляет%ДОМ%переменная окружения. Что-то вроде:
@ set HOME=
@ c:\CygWin\bin\bash.exe --login -iНачинаяОболочка Башпутем изменения$ДОМОЙзначение и перезапускаем его:
c:\CygWin\bin\bash.exe --login -i -c "export HOME=/home/%USERNAME%;cd /home/%USERNAME%; exec /bin/bash"
Просто копируем все файлы конфигурации изc:\CygWin\home\%ИМЯ_ПОЛЬЗОВАТЕЛЯ%кc:\Пользователь\%ИМЯ_ПОЛЬЗОВАТЕЛЯ%. Кажется, работает нормально (кто-нибудь знает о каких-либо проблемах с этим методом?).
Спасибо @user1147688 (выше) за идеи и ссылку на решениеаналогичный вопрос.
решение2
Для меня проблема была не в переменной среды Windows %HOME%, которую я смог удалить. В диалоговом окне «Переменные среды» не было указано никакой переменной %HOME%.
Вместо этого я смог решить проблему в Bitvise, сняв галочку "Разрешить переменные среды" в дополнительных настройках. Я также удалил "%HOME%" в полеНачальный каталог оболочки терминала, но этого было недостаточно.