Почему поведение оболочки VNC bash и удаленной оболочки SSH отличается?

Также убедитесь, что вы делаете dd с bs=4M, так как многие USB-накопители не могут правильно обрабатывать очень маленькие блоки (не знаю почему, просто испытайте ).

Вы также можете попробовать текстовый -установщик:

Когда вы увидите пункт меню «Установить Centos», нажмите клавишу табуляции, добавьте текст в конец любых существующих аргументов командной строки установщика, а затем нажмите клавишу возврата.

1
11.05.2021, 10:18
1 ответ

bashраспознает три состояния оболочки:

  • оболочка входа в систему -экземпляр оболочки, который был вызван непосредственно при входе на сервер через, например.ssh или текстовая консоль
  • интерактивная оболочка -любая оболочка, в которой можно вводить команды, например. оболочка запущена в графическом терминале. Оболочка входа также (обычно )интерактивная оболочка.
  • не -интерактивная оболочка -обычно это оболочка, вызываемая из какой-либо программы для запуска другой программы или команды. Как следует из названия, в неинтерактивной оболочке -нет взаимодействия с пользователем. Например, если вы используете ssh для запуска только одной команды на удаленной машине (, такой как ssh host.domain ls -l /etc), то вы неявно вызываете не -интерактивную оболочку на удаленной машине, и эта оболочка, в свою очередь, запускает команду, и затем уходит.

Как работают файлы запуска:

  • оболочка входа в систему выполняет команды из /etc/profile(, который является глобальным файлом для всех пользователей ), а затем ищет файлы .bash_profile, .bash_loginили.profile-в указанном порядке -в домашнем каталоге отдельного пользователя и выполняет команды из любого файла, найденного первым. Обычно по умолчанию во вновь созданной учетной записи существует только файл .profile, и по умолчанию он также включает команды для выполнения содержимого файла .bashrc. Однако вы можете удалить код для запуска .bashrcиз файла .profileили можете создать любой из двух других файлов с нужными вам командами, и тогда .profileне будет запускаться.
  • интерактивная (, но не -логин)оболочка выполняет команды из /etc/bash.bashrc(, которые являются глобальными для всех пользователей ), а затем из .bashrcфайла в домашнем каталоге отдельного пользователя каталог
  • не -интерактивные оболочки, запущенные локально(т.е. из программы или набрав bashв окне терминала ), не запускайте ни один из этих файлов
  • не -интерактивные оболочки, запущенные из сети(например.в приведенном выше примере, когда вы запускаете команду на удаленной машине через ssh ), выполняйте команды из файла .bashrcтолько в домашнем каталоге пользователя. Однако файл .bashrcпо умолчанию часто содержит фрагмент кода в начале, который останавливает дальнейшее выполнение, если интерактивная оболочка -не интерактивна.

Есть еще некоторые тонкости в конкретных случаях, но в основном это работает так, как описано выше.

Когда вы подключаетесь через VNC и открываете терминал, вы выполняете интерактивную оболочку без входа -. Когда вы входите через ssh, вы выполняете оболочку входа. Поэтому разница.

3
28.07.2021, 11:33

Теги

Похожие вопросы