1

Из этого вопроса я понимаю, что в зависимости от операционной системы sh и bash ведут себя по-разному.

Делая env и alias я могу сказать, что:

Каждый раз, когда я открываю OSX Terminal или запускаю bash переменная $SHELL=/bin/bash запускает source ~/.profile который вызывает source ~/.bashrc . Если я запускаю $sh команды source ~/.profile или source ~/.bashrc не вызываются, поэтому ни один из псевдонимов не определен.

Теперь на сервере Linux или UNIX, используя bash или sh:

Как я могу сказать, какие скрипты запускаются при входе в систему?

2 ответа2

2

Сначала определите вашу оболочку, как отмечено в другом ответе, это просто делается с помощью команды ps ...

$ ps
  PID TTY          TIME CMD
 3360 pts/2    00:00:00 bash
 3702 pts/2    00:00:00 ps

Чтобы быть уверенным, какие файлы читаются, вам нужно изучить систему, в которую вы входите. Оболочка 'bash' имеет много вариантов 'если это', то 'сделать это' иначе 'сделать что-то еще'. Чтобы увидеть полное описание того, какие файлы получены, смотрите здесь, но обычно список ...

  • / И т.д. / профиль
  • $ HOME / .bash_profile
  • $ HOME / .bashrc (если это настроено в .bash_profile)
  • $ HOME / .bash_logout (при выходе, а не при входе)

Для оболочки Bourne ('sh') это обычно происходит следующим образом при входе в систему

  • / И т.д. / профиль
  • $ HOME / .profile

Что мне нравится делать в системах, с которыми я не знаком, так это строка в любых файлах запуска, которые я ожидаю прочитать, которые проверяют, подключен ли стандартный вывод к терминалу, и отображает ли оно имя файла. В этом примере я использую его в файле .bash_profile.

[ -t 1 ] && echo "reading .bash_profile"

Это работает как для bash, так и для sh (и некоторых других производных). Это помогает, потому что я знаю, что читается, когда и, если я получаю ошибки, я знаю, из какого файла они пришли (ошибки до первого эхо-сообщения, вероятно, происходят из самого процесса входа в систему или из общесистемного /etc /profile.

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

1
  1. /etc/passwd Последнее поле /etc /passwd сообщит вам вашу оболочку логина.
  2. ps Запуск PS также скажет вам (и уровень оболочки)

      PID TTY          TIME CMD
     5802 pts/0    00:00:00 bash
     6292 pts/0    00:00:00 ps
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .