В разделе 2.5.3 IEEE Std 1003.1, редакция sh издания 2004 года относительно переменной среды PS1
определено:
Каждый раз, когда интерактивная оболочкаготовность прочитать команду, значение этой переменной должно быть подвергнуто расширению параметра и записано со стандартной ошибкой.Значением по умолчанию должно быть «$».Для пользователей, которые имеют определенные дополнительные привилегии, определенные реализацией, значением по умолчанию может быть другое значение, определяемое реализацией.Оболочка должна заменять каждый экземпляр символа '!'в PS1 с номером файла истории следующей команды, которая будет набрана.Спасаясь от "!"с другим '!'(то есть, «!!») ставит буквальный символ «!»в подсказке.Этот том IEEE Std 1003.1-2001 определяет влияние переменной только для систем, поддерживающих опцию Утилиты переносимости пользователя.
Так что, похоже, !
можно использовать в переменной PS1 для замены наномер файла истории следующей команды для ввода.Если вы попробуете это в реализации оболочки Bourne, такой как dash
, вы обнаружите, что она не реализована.Это также не реализовано в сегодняшнем выпуске GNU.
Какая оболочка это реализует?