Терминал CygWin в удаленной консоли (SSH) не запускается по правильному пути $HOME

Терминал CygWin в удаленной консоли (SSH) не запускается по правильному пути $HOME

Я установил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... и т.д.). Насколько я знаю, в программе такой функции нет. Буду искать дальше.

Обходные пути:

  1. ПозвонитеОболочка Башчерез.cmdфайл, который сначала удаляет%ДОМ%переменная окружения. Что-то вроде:

    @ set HOME=
    @ c:\CygWin\bin\bash.exe --login -i

  2. НачинаяОболочка Башпутем изменения$ДОМОЙзначение и перезапускаем его:

    c:\CygWin\bin\bash.exe --login -i -c "export HOME=/home/%USERNAME%;cd /home/%USERNAME%; exec /bin/bash"

  3. Просто копируем все файлы конфигурации изc:\CygWin\home\%ИМЯ_ПОЛЬЗОВАТЕЛЯ%кc:\Пользователь\%ИМЯ_ПОЛЬЗОВАТЕЛЯ%. Кажется, работает нормально (кто-нибудь знает о каких-либо проблемах с этим методом?).

Спасибо @user1147688 (выше) за идеи и ссылку на решениеаналогичный вопрос.

решение2

Для меня проблема была не в переменной среды Windows %HOME%, которую я смог удалить. В диалоговом окне «Переменные среды» не было указано никакой переменной %HOME%.

Вместо этого я смог решить проблему в Bitvise, сняв галочку "Разрешить переменные среды" в дополнительных настройках. Я также удалил "%HOME%" в полеНачальный каталог оболочки терминала, но этого было недостаточно.

Связанный контент