9

Если я проверю свою оболочку bash в терминале OS X (10.6.4), например, набрав echo $0 , перед моей оболочкой будет тире, например: -bash . Что означает этот штрих?

1 ответ1

9

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

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