Если я проверю свою оболочку bash в терминале OS X (10.6.4), например, набрав echo $0
, перед моей оболочкой будет тире, например: -bash
. Что означает этот штрих?
1 ответ
Это означает, что bash
вызывается как оболочка входа в систему.
man bash
говорит:
Оболочка входа - это та, чей первый символ аргумента ноль -
-
, или тот, который начинается с опции--login
.Когда bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром
--login
, она сначала читает и выполняет команды из файла/etc/profile
, если этот файл существует. После прочтения этого файла он ищет~/.bash_profile
,~/.bash_login
и~/.profile
в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения. Опция--noprofile
может использоваться, когда оболочка запущена, чтобы запретить это поведение.Когда оболочка входа в систему закрывается, bash читает и выполняет команды из файла
~/.bash_logout
, если он существует.
В выводе login -pf
вы найдете ps
, который по умолчанию запускает оболочку входа в систему.
Попробуйте запустить login -pf
и login -pfl
и увидите разницу. man login
описывает разницу:
-l
Сообщает программе, выполняемой при входе в систему, что это не сеанс входа в систему (по соглашению сеанс входа в систему передается программе с дефисом в качестве первого символаargv[0]
; эта опция отключает это), и запрещаетchdir(2)
в домашний каталог пользователя. По умолчанию добавляется дефис (это сеанс входа в систему).