Если я проверю свою оболочку 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)в домашний каталог пользователя. По умолчанию добавляется дефис (это сеанс входа в систему).
