Якщо я досліджую мою Баш оболонки як OS X (10.6.4) терміналу, наприклад, шляхом введенням echo $0, є тир перед моєю оболонкою, як це: -bash. Що означає ця тире?
Якщо я досліджую мою Баш оболонки як OS X (10.6.4) терміналу, наприклад, шляхом введенням echo $0, є тир перед моєю оболонкою, як це: -bash. Що означає ця тире?
Відповіді:
Це означає, що 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)перейти до домашнього каталогу користувача. . За замовчуванням - додати дефіс (це сеанс входу).
echo $0: якщо я echo $0набираю термінал, на який викликається ctrl + alt + f1, результат -bash; але якщо я введіть його у termianl, на який посилається ctrl + alt + t, результат є bash(відсутність провідної тире). Чи можете ви пояснити, чому?
--loginаргументом, він не змінює його argv[0], але виконує функцію оболонки входу.
manцитує