Подтвердить что ты не робот

Удалить сообщение "последний вход" для новых вкладок в терминале

После некоторого поиска я создал файл ~/.hushlogin, и он работал, но только для новых окон. Есть ли способ заставить его работать и для новых вкладок?

4b9b3361

Ответ 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 не добавляет это сообщение.