Узнать, какие сценарии запускаются bash при запуске

Команда last дает несколько вывод колонки; вы должны извлечь только первый столбец (используя awk или cut ) и отсортировать данные так, чтобы uniq мог выполнять свою работу. Использование обоих uniq -c и wc -l является избыточным (выберите один):

uniqueUsers=$(last |cut -f1 -d ' ' | grep -v -e '^\(\|reboot\|wtmp\)$' |sort -u | wc -l)
14
29.08.2018, 06:53
2 ответа

Если в вашей системе есть strace, вы можете вывести список файлов, открытых оболочкой, например, используя

echo exit | strace bash -li |& grep '^open'

(-li означает login shell interactive; используйте только -i для interactive non-login shell.)

Это покажет список файлов, которые оболочка открыла или пыталась открыть. В моей системе они следующие:

  1. /etc/profile
  2. /etc/profile.d/* (различные скрипты в /etc/profile.d/)
  3. /home//. bash_profile (это не удается, у меня нет такого файла)
  4. /home//.bash_login (это не удается, у меня нет такого файла)
  5. /home//.profile
  6. /home//. bashrc
  7. /home//.bash_history (история командных строк; это не скрипт)
  8. /usr/share/bash-completion/bash_completion
  9. /etc/bash_completion. d/* (различные сценарии, обеспечивающие функциональность автозавершения)
  10. /etc/inputrc (определяет привязки клавиш; это не сценарий)

Для получения дополнительной информации используйте man strace.

44
27.01.2020, 19:50

Возрождение этого вопроса, потому что straceздесь излишне.

Выполнить bash и вырезать его из вывода. -li— это интерактивный вход в систему, -xвыводит информацию о внутренних действиях bash, а -c exitсообщает bash о немедленном завершении работы. Использование sedдля фильтрации команды sourceили псевдонима ..

/bin/bash -lixc exit 2>&1 | sed -n 's/^+* \(source\|\.\) //p'
6
27.01.2021, 15:00

Теги

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