Возможно, его нет, потому что это было бы не-POSIX.
Дальнейшее чтение:
Конечно, zsh
может реализовать расширение, но если другие приложения не могут читать переменные, они имеют ограниченное применение.
Переменные оболочки и переменные среды отличаются тем, что переменные оболочки могут храниться в памяти интерпретатора оболочки (и они ограничены только самим интерпретатором оболочки), в то время как переменные среды экспортируются - становятся доступными для использования другими программами. Именно поэтому в игру вступают стандарты (такие как POSIX).
Хм. Это не должно быть сложным для достижения, но это также очень сложно :)
Вы можете просто сделать то, что предложил Александр ( init = / bin / bash
), и все будет в порядке.
Процесс инициализации - это то, что вызывает ядро, и он запускает все вашего пользовательского пространства. Терминал входа в систему включен. Если ваш init просто порождает этот терминал bash, все в порядке. Но если этот терминал выйдет из строя или завершится, init должен очиститься. Если некоторые процессы, которые вы запускаете с терминала, умирают, вам необходимо очистить их. Если они умрут, то их детям потребуется новый родительский процесс, это будет ваш init.
Я настоятельно рекомендую выделить 10 минут, чтобы прочитать это, это очень удобный обзор того, что делает init
:
http://tilde.town/~elly/userland.txt
Тогда вы подойду ближе, чтобы понять, что влечет за собой запуск вашего собственного init.
В соответствующей части этой ссылки говорится:
Нам нужно сделать только одно: предоставить исходный двоичный файл для запуска по любому из этих путей: / sbin / init, / etc / init , / bin / init или / bin / sh. Этот процесс (init) запускается как pid 1.
Процесс init должен делать две вещи:
Никогда не завершать работу (если init завершается, ядро паникует)
Получать зомби-процессы
Остальные процессы text затем реализует простой init.
«терминал» (физический компьютер) и «bash» (оболочка) совершенно разные. Я не совсем уверен, о чем вы спрашиваете, но вы можете добавить init = / bin / bash
в командную строку ядра, чтобы загружаться прямо в bash.
bash
не терминал, а оболочка.
Процесс init
, после завершения процесса загрузки и если машина работает только на текстовом уровне запуска (то есть без X Windows), в конечном итоге вызывает getty
, который, в свою очередь, вызывает логин
. Это процесс, отвечающий за отображение приглашения на вход и разрешение пользователям входить в систему. Это то, что происходит во всех дистрибутивах Linux.
Вам нужно просто определить bash
как оболочку входа по умолчанию для пользователей (при условии, что вам нужна многопользовательская среда).