Существуют ли неинтерактивные оболочки для входа?

Я знаю, какая разница между интерактивными / неинтерактивными и входами / не-входами, но похоже, что на практике никогда не будет неинтерактивной оболочки входа, если у вас есть что-то вроде /bin/bash --login some-script.sh в скрипте (и даже это кажется немного странным). Правильно это или они более распространены?

  • Получение ошибки RE: операнд-оператор повторения недействителен в osx sed
  • Можно ли настроить конфигурацию git через несколько репозиториев?
  • Регулярное выражение SHELL заканчивается обратным слэшем
  • Синтаксическая ошибка при попытке установить петлю оболочки nohup
  • Перенаправление команд в несколько файлов: command> file1> file2
  • В zsh как я могу перечислить все переменные среды?
  • Есть ли веская причина для запуска sudo su?
  • Список процессов: / bin / sh -e / proc / self / fd / 11
  • One Solution collect form web for “Существуют ли неинтерактивные оболочки для входа?”

    Большинство учетных записей по подсчетам на вновь установленной системе не являются интерактивными, на самом деле:

     $ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c 5 /bin/bash 23 /bin/false 1 /bin/sh 1 /bin/sync 17 /usr/sbin/nologin 

    Ясно /bin/bash и /bin/sh являются традиционными оболочками, и они интерактивны. Но все остальные элементы в этом списке не являются интерактивными. Если вы читаете список и не знаете, что делает один из них, вы можете просто просмотреть его страницу руководства (например, man nologin или man sync ).

    Что действительно делает команда

    Глядя на историю проводки капитана, я вижу, что они довольно неопытные с Unix. Так что, может быть, вопрос в комментарии о несоблюдении, связанном с командной строкой в ​​верхней части ответа, а не просто о выходе. Поэтому я объясню также и строку командной строки, хотя это действительно не по теме для этого вопроса.

    Команда представляет собой конвейер Unix . Конвейер представляет собой цепочку команд – вы читаете ее слева направо, в которой вывод первой команды становится входом второго, вывод второго становится входом третьего и так далее, пока конец трубопровода. Выход последнего процесса отображается на терминале (если только он не был перенаправлен). Для получения дополнительной информации см. Запись в Википедии о конвейерах оболочки .

    Если вы не понимаете, что делает конвейер, вы можете просто запустить его в сегментах, чтобы узнать, что происходит. Вы также можете прочитать страницу руководства для команд, которые используются (здесь awk , sort и uniq ). Фактически, вы должны сделать это сейчас. Я буду ждать.

    Давайте постепенно запускаем этапы конвейера (вы можете безопасно сделать это в своей собственной системе Unix):

     ~$ awk -F: '{print $7}' < /etc/passwd | sed -e 's/^/ /' /bin/bash /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /bin/sync /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /bin/false /bin/false /bin/false /bin/false /bin/false /bin/false /bin/false /bin/false /bin/false /usr/sbin/nologin [ ... and so on, I've left the rest out ... ] 

    Вышеприведенный результат – это просто содержимое седьмого поля из файла /etc/passwd . Это база данных (flat-text-file), которая сообщает системе, что у всех есть оболочка входа в систему. Если вы хотите узнать больше о /etc/passwd просто прочитайте его (он читается в мире) и посмотрите на страницу руководства для него (man 5 passwd) .

    Поэтому, читая весь список, вы можете получить представление о том, что такое популярные предметы, но это не очень хороший формат для ответа на этот вопрос, потому что вопрос действительно касался того, насколько распространены неинтерактивные оболочки. Давайте посчитаем их. Самый простой способ сделать это – сначала отсортировать элементы:

     ~$ awk -F: '{print $7}' < /etc/passwd | sort /bin/bash /bin/bash /bin/bash /bin/bash /bin/bash /bin/false /bin/false /bin/false /bin/false /bin/false [ ... and so on, I've left the rest out ... ] 

    Мы можем использовать программу uniq чтобы показать нам только уникальные элементы:

    ~ $ awk -F: '{print $ 7}' </ etc / passwd | сортировать | uniq | sed -e 's / ^ / /' / bin / bash / bin / false / bin / sh / bin / sync / usr / sbin / nologin

    Но подождите, это бесполезно, сколько из них было там? Давайте попробуем uniq (прочитайте страницу руководства!):

     ~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c 5 /bin/bash 23 /bin/false 1 /bin/sh 1 /bin/sync 17 /usr/sbin/nologin 

    Конечно, это результат, который мы видели в верхней части ответа. Давайте отсортируем его снова, чтобы увидеть записи в порядке:

     ~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c | sort 17 /usr/sbin/nologin 1 /bin/sh 1 /bin/sync 23 /bin/false 5 /bin/bash 

    Подождите, это не так, 17 до 1 и 5 после 23. Проблема в том, что элементы сортируются лексикографически . Давайте попросим sort их численно и в обратном порядке:

     ~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c | sort -n -r 23 /bin/false 17 /usr/sbin/nologin 5 /bin/bash 1 /bin/sync 1 /bin/sh 

    Я думаю, это объясняет все в оригинальном ответе. Если вы все еще неясны в деталях того, что делают эти команды, вы можете прочитать страницы руководства. Если вы все еще неясны на принципах того, что происходит, лучше начать с чтения книги (онлайн или на бумаге), объясняющей Unix и Linux.

    Interesting Posts

    Нет повышенных разрешений при использовании графических приложений на i3 wm

    Можно ли настроить yum для импорта ключей для репозиториев, не относящихся к Red Hat?

    Использование корзины с Mutt: имеет ли смысл?

    Почему я получаю сообщение об ошибке: «Не удалось открыть« / dev / st0 »при извлечении архива с помощью bsdtar?

    Есть ли способ запустить скрипт сразу после деактивации учетной записи?

    Как можно использовать `dd` для блоков данных с правом сдвига?

    трубы – вставка трубы в середину строки

    Как grep / print значение ключа в json, которое хранится в переменной?

    Arch Linux 64-битный Android ADB?

    Мониторинг ЦП и ОЗУ с помощью родительского идентификатора

    Сохранять разрешения с помощью rsync

    Изменить каталог для файлов подсветки синтаксиса Kate

    Изменить цвет текста ввода, а не выводить

    Могу ли я использовать и устанавливать пакеты Ubuntu в Debian?

    Попытка закрыть firefox, но не может найти файл блокировки

    Linux и Unix - лучшая ОС в мире.