1

Я использую Ubuntu 12.04 LTS, и по какой-то причине нет истории терминала (нажатие стрелки вверх для предыдущей команды), а также нет автозаполнения (нажатие клавиши табуляции). Эти замечательные функции всегда работали на любой машине UNIX, которую я использовал в прошлом. Я заглянул в меню сочетаний клавиш для терминала и ничего там не увидел.

  1. Как я могу получить стрелку вверх, чтобы дать мне предыдущую команду терминала?
  2. Как я могу получить клавишу табуляции для выполнения автозаполнения?

Заранее спасибо!

РЕДАКТИРОВАТЬ: почти уверен, что я использую bash , echo $SHELL возвращает /bin/sh . Я запускаю это на моей локальной коробке. Я не уверен, как запустить историю, но когда я делаю ls -a я не вижу обычный файл истории (кажется, он называется .history?)

1 ответ1

3

Вы не используете bash , вы используете sh . Что это означает, зависит от вашей системы, от Debian и Ubuntu , /bin/sh - это символическая ссылка на dash так что это оболочка по умолчанию. dash нет нужной вам функциональности, вам нужно переключиться на другую оболочку, такую как bash или zsh . Вы можете сделать это с помощью команды chsh:

$ chsh
Password: 
 Changing the login shell for terdon
 Enter the new value, or press ENTER for the default
  Login Shell [/bin/sh]: /bin/bash

Теперь на каждом новом терминале, который вы открываете, будет работать bash а стрелка вверх должна отображать историю.


Даже в системах, где sh - это ссылка на bash , они не эквивалентны. Как объяснил man bash:

   If  bash  is  invoked  with  the name sh, it tries to mimic the startup
   behavior of historical versions of sh as  closely  as  possible,  while
   conforming  to the POSIX standard as well.  When invoked as an interac‐
   tive login shell, or a non-interactive shell with the  --login  option,
   it  first  attempts  to read and execute commands from /etc/profile and
   ~/.profile, in that order.  The  --noprofile  option  may  be  used  to
   inhibit  this  behavior.  When invoked as an interactive shell with the
   name sh, bash looks for the variable ENV, expands its value  if  it  is
   defined,  and uses the expanded value as the name of a file to read and
   execute.  Since a shell invoked as sh does not attempt to read and exe‐
   cute  commands from any other startup files, the --rcfile option has no
   effect.  A non-interactive shell invoked with  the  name  sh  does  not
   attempt  to  read  any  other  startup files.  When invoked as sh, bash
   enters posix mode after the startup files are read.

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