1

Я установил CygWin v1.7.28.

Проблема быстро объяснилась: в основном, при запуске оболочки CygWin через удаленный вход в систему $ HOME находится не там, где должен, со всеми вытекающими (плохими) последствиями этого. Локальные приставки выполняет ОК.

А теперь подробности:

Если в GUI (Windows XP) я делаю:

c:\CygWin\bin\bash.exe --login -i

или (практически так же):

c:\CygWin\Cygwin.bat

Я начинаю с правильного $ HOME со всеми моими конфигурационными файлами:

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 (Bitvise SSH Server v6, установленный в Windows XP SP3), и я повторю процесс (тот же пользователь):

c:\CygWin\bin\bash.exe --login -i

Теперь Bash Shell не запускается там, где должен:

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 ... и т.д.), Таких как псевдонимы.

Возможно, это странное поведение вызвано отсутствием какой-либо переменной среды (которая существует в графическом интерфейсе, но отсутствует на удаленной консоли), но я не смог ее найти.
Как я мог сделать так, чтобы моя удаленная консоль запускала оболочку Bash, включенную в CygWin, где она должна?

  • РЕДАКТИРОВАТЬ: вот некоторые дополнительные данные по запросу:

В местном Bash Shell:

LuisRivas@portatilacer ~
$ id
uid=1004(LuisRivas) gid=513(Ninguno) grupos=513(Ninguno),0(root),544(Administradores),545(Usuarios)

На удаленном Bash Shell (ничем не отличается):

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 при запуске своей оболочки. Эта информация сейчас удалена.

  • РЕДАКТИРОВАТЬ 3: Мои тесты были сделаны только для удаленного входа SSH, а не Telnet. Так возникла проблема: именно из-за некоторого поведения Bitvise SSH Server (см. Ответ ниже).

2 ответа2

1

Проблема в нескольких словах: Bitvise SSH Server (Windows) добавляет (предположительно нелогичную; кажется, не нужную) переменную среды % HOME% , равную% HOMEPATH%.

Решение: возможность управления переменными среды, которые Bitvise SSH Server добавляет к каждому SSH-клиенту (Putty, классический SSH SSH командной строки ... и т.д.). Пока я исследовал, программа не имеет этой функциональности. Я буду продолжать поиск.

обходные:

  1. Вызовите командную консоль Bash через файл .cmd, который сначала удаляет переменную среды % HOME% . Что-то вроде:

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

  2. Запуск Bash Shell , изменив значение $ HOME и перезапустив его:

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

  3. Просто скопируйте все файлы конфигурации из c:\CygWin\home\% USERNAME% в c:\User\% USERNAME% . Кажется, работает хорошо (кто-нибудь знает о некоторых проблемах с этим методом?).

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

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .