После некоторого поиска я создал файл ~/.hushlogin
, и он работал, но только для новых окон. Есть ли способ заставить его работать и для новых вкладок?
Удалить сообщение "последний вход" для новых вкладок в терминале
Ответ 1
Решение
Выполняется OS X 10.8.3. Я не тестировал его на других версиях, но до тех пор, пока терминал имеет вышеуказанный вариант, он должен работать.
-
В Terminal.app откройте "Настройки- > Настройки" и выберите профиль, который вы используете. Перейдите на вкладку "Оболочка" и под заголовком "Запуск" установите флажок "Запустить команду:" и введите в поле:
login -fpql your-username /bin/bash
Подставьте
your-username
своим фактическим именем пользователя Unix. Если вы используете оболочку, отличную от оболочки по умолчанию bash, замените/bin/bash
на полный путь к этой оболочке (да, даже если вы уже установили ее в настройках → Запуск). -
Убедитесь, что "Run inside shell" не отмечен.
-
Если у вас есть запрос "Запрашивать перед закрытием: только если есть какие-то процессы, отличные от того, что выбрана в качестве оболочки для входа и:", добавьте "login" и "bash" в список процессов, которые не будут запрашиваться.
-
Убедитесь, что у вас есть файл
~/.bashrc
, так как это будет файл bash, используемый при запуске, а не~/.bash_profile
. Я просто имею ссылку на один файл, используя этот метод. Вы также должны быть уверены, что это источники /etc/profile.
Описание
Мы хотим запустить login
с опцией -q
, чтобы сообщить ему, чтобы он подавил сообщение "Последний вход" даже в отсутствие файла .hushlogin
. (Как отмечалось выше, login
будет смотреть только в cwd для этого файла, а не в вашем домашнем каталоге, поэтому вам понадобится файл .hushlogin
в каждом каталоге, в котором вы открыли оболочку, чтобы этот метод работал.)
Проблема заключается в том, что Terminal запускает что-то вроде login -pfl your-username /bin/bash -c exec -la bash /usr/local/bin/bash
при создании новой оболочки (я использую homebrew версию bash, следовательно, странный путь bash в конце)), в которой отсутствует флаг -q
.
К сожалению, нет возможности напрямую изменять аргументы, используемые терминалом, поэтому мы просто трамплируем новый сеанс входа с login -pfql
из сеанса терминала по умолчанию login -pfl
. Inelegant, но он работает.
Нам нужно иметь опцию -q
и путь к bash, чтобы сохранить параметр "Новые окна/вкладки с помощью: Тот же рабочий каталог". Если вам не нужен этот параметр, вы можете удалить этот флаг и аргумент и, вероятно, избегать использования .bashrc
выше.
Ответ 2
В Mavericks создание пустого файла ~/.hushlogin
удаляет строку "Последний вход", для новых окон и новых вкладок.
На моем Mac это работает.
Ответ 3
вы можете просто добавить clear
к .bash_profile
Ответ 4
Возможно, это зависит от ОС. В терминале 2.3 (10.8) прикосновение к файлу ~/.hushlogin
подавляет сообщение "последнего входа" для новых вкладок, а также новые окна. То есть, это работает для меня.
На всякий случай, это помогает выяснить, что происходит (и в случае, если вы не знаете), обратите внимание, что сообщение "последнего входа" в принципе происходит от login
(1), а не от оболочки. Или, точнее, если оболочка вызывается определенным образом (включая запуск с опцией -l
), то bash будет действовать так, как если бы он был вызван как оболочка входа в систему (zsh может иметь аналогичную но я не могу найти его прямо сейчас). Теперь, может быть, когда Terminanl открывает новую вкладку в вашей версии OS X, оболочка эффективно имитирует открытие оболочки входа и, возможно, неправильно делает эту деталь. Но если у вас есть версия 10.8 bash/zsh (а именно 3.2.48/4.3.11), то я не знаю, что может быть ошибкой.
Ответ 5
другая альтернатива: используйте другую оболочку. fish не добавляет это сообщение.