Дублирующиеся подсказки удара

Файл/иерархия каталогов Linux охвачен Стандартом Файловой иерархии или FHS.

Как работы ОС над "более глубоким" уровнем являются намного более сложной темой. В целом поверхностный уровень является пользовательскими командами... главным образом команды в / мусорном ведре и/usr/bin каталогах, которые покрыты разделом главы 1 страниц справочника. Следующие уравнивают, стандартные библиотечные функции и интерфейсы (на стороне программирования), которые охвачены в главе 3 по большинству систем UNIX (включая Linux). Системные утилиты уровня найдены в/sbin и/usr/sbin и охвачены главой 8 человека, и конфигурационные файлы сохранены в / и т.д. и охвачены страницами руководства в главе 5.

Следующий более низкий уровень детализации был бы интерфейсом системного вызова. Это охвачено страницами справочника в разделе/главе два. Системные вызовы являются функциями в ядре... и деталях для точно, как назвать их, главным образом покрыты Вашим C программирование библиотек (libc---, на которых обеспечивают, должен системы Linux в форме glibc---lib GNU для C).

Само ядро записано в C, но, как Вы могли бы ожидать, рассматриваете ли Вы проблему "курицы-и-яйца", она не связана против libc. Таким образом, ядро обеспечивает функции, от которых зависят библиотеки C. Программы пространства пользователя, такие как команда 'ls', Ваша оболочка, любые редакторы, и, на самом деле, компиляторы и компоновщики, используемые для превращения исходного кода в запущение программ, все связаны с этими библиотеками C. (Также нормально для библиотек C "перенести" системные вызовы с их собственными реализациями, которые имеют те же имена как системные вызовы, но обеспечивают определенную степень мобильности, возможно добавляя некоторые рычаги для отладки, трассировки или обработки ошибок).

Самые глубокие уровни детализации являются, конечно, самими источниками ядра. Они документируют точно, что реализует ядро. Например, если Вы хотите видеть точно список мест и имен файлов, ядро пытается найти и выполниться как процесс "init", Вы видите его в init/main.c

Я участвовал кратко и небрежно в усилии, несколько лет назад, организовать серию исходных сессий исследования ядра с некоторыми экскурсиями и лекциями и создать учебник онлайн для понимания их. Части этого были зарегистрированы на страницах в Викиверситете: Чтение Источников Ядра Linux. Существуют все еще некоторые полезные обсуждения для получения любопытного и инициативного запущенного средства чтения. (Однако все еще необходимо смочь считать исходный код C и возможно понять некоторый встроенный ассемблерный код для реального изучения его).

Реальный вопрос состоит в том так же, как диктор будет обычно интонировать в тех, которые играют неопределенность... "Как может Вы gooooo?"

-2
09.07.2012, 19:23
3 ответа

Я не понимаю проблемы. ввод bash, login или su КАК ПРЕДПОЛАГАЕТСЯ, запускают новую оболочку.

Что Вы ожидаете происходить?

Я не вижу, где Ваша система делает что-то не так.

если Вы хотите открыть другую ТЕРМИНАЛЬНУЮ программу, то введите gnome-terminal или независимо от того, что название программы.

Bash является оболочкой, где Вы вводите команды, терминал гнома, xterm, консоль (и партии больше) просто эмуляторы терминала, которые показывают вывод оболочки (bash/sh/dash/ksh/csh/zsh...)

2
28.01.2020, 05:15
  • 1
    я понимаю, что те команды запускают новые оболочки; жаль о порождении беспорядка. Проблема, которую я имею, является чисто косметической; ввод su в окно XTerm и вход в систему не вызовет дублирование подсказки (т.е. user@hostname [user2@hostname]); скорее Вы закончите только с второй подсказкой, пока Вы не выйдете из нее или выйдете из окна. –  Randall Ma 09.07.2012, 19:15
  • 2
    я понимаю, что те команды запускают новые оболочки; жаль о порождении беспорядка. Проблема, которую я имею, является чисто косметической; ввод su в окно XTerm и вход в систему не вызовет дублирование подсказки (т.е. user@hostname [user2@hostname]); скорее Вы закончите только с второй подсказкой, пока Вы не выйдете из нее или выйдете из окна. –  Randall Ma 09.07.2012, 19:15
  • 3
    Это вероятно что-то в Вашей переменной среды PS1, отображаемой и что-то в Ваших сценариях запуска оболочки, которое делает это. Если Вы используете удар, регистрируете файлы /etc/bash*, $HOME/.bash*. Просто должен выяснить, какой файл/сценарий является милым и делает огромной подсказкой. –  lornix 09.07.2012, 20:08
  • 4
    Это была строка TERM=screen экспорта в моем bashrc. Это также зафиксировало некоторый интервал в моем клиенте IRC и клиенте IM. Огромное спасибо! :) –  Randall Ma 09.07.2012, 20:19

если

_randall@manbearpig:/home/randall[root@manbearpig randall]#

не строка приглашения, Вы ожидаете, затем проверяете var среды PS1, который содержит формат строки приглашения. Поиск "ЗАПРОС" в руководстве удара для чтения больше о PS1.

1
28.01.2020, 05:15
  • 1
    Моя переменная PS1 (значение по умолчанию) является той, которую я предпочитаю; моей проблемой является косметическая: использование эмулятора терминала как XTerm отобразится [randall@manbearpig randall] после выполнения bash команда в домашнем dir, но Терминал Gnome и Терминал XFCE дают _randall@manbearpig:/home/randall[randall@manbearpig randall]#, который кажется излишне длинным и ужасным с точки зрения удобства использования. –  Randall Ma 09.07.2012, 19:20

Необходимо было бы использовать что-то как:

exec bash # or exec login or exec su

Но будьте осторожны, поскольку это заменяет родительский процесс, целое окно/вкладка, вероятно, умрет и нет никакой гарантии, новая оболочка "сохранит" его. Необходимо будет попробовать его сами, я могу только гарантировать, что это работает в Konsole.

0
28.01.2020, 05:15

Теги

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