Как мне получить доступ к буферу истории в sh? (не в Bash)

Если вы хотите, чтобы ваши гости имели полный прозрачный доступ к остальной части вашей сети, не используйте сеть NAT по умолчанию. В моем случае я тоже отключил его:

virsh net-list
Name                 State      Autostart
-----------------------------------------

В моем / etc / network / interfaces у меня есть такое определение, которое настраивает мостовое устройство br0 на моем сетевом адаптере eth0 , который я могу использовать для своих гостей:

########################################################################
# The network interface
# 192.168.1.0/24
#
#allow-hotplug eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 192.168.1.253
        netmask 255.255.255.0
        gateway 192.168.1.254
        bridge_ports eth0
        bridge_fd 0
        bridge_maxwait 0

Затем я могу указать этот ранее определенный мост в качестве общего устройства при определении гостя:

virsh dumpxml myguest
    ...
    <interface type='bridge'>
      <mac address='52:54:00:3c:75:30'/>
      <source bridge='br0'/>
      <target dev='vnet5'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
    </interface>
    ...
3
13.04.2017, 15:36
3 ответа

если оно не задано явно, нет истории оболочки по умолчанию. чтобы проверить, есть она у вас или нет, можно выполнить команду env|grep -i hist и если вы увидите переменные типа histfile и т.д. (могут быть заглавными), это означает, что история вашего шелла включена, и вы должны увидеть, где находится файл истории. Чтобы очистить, вы можете сделать любой достойный метод, кроме удаления файла

4
27.01.2020, 21:12

Не все оболочки поддерживают историю. dash имеет ограниченную поддержку истории через команду fc, если скомпилирован с поддержкой libedit, но не поддерживает ее в противном случае. dash не способен сохранять файл истории.

Часто, если оболочка не поддерживает клавишу со стрелкой вверх, можно предположить, что она также не сохранит файл истории. Это не жесткое правило, но оно верно во всех случаях, с которыми я сталкивался.

Некоторые другие оболочки (в частности, bash, но и другие тоже) используют readline, который обычно сохраняет историю в вашем домашнем каталоге в виде файла ~/.*_history, где * заменяется именем программы. Python 3, например, использует readline и хранит свою историю в ~/.python_history.

В зависимости от оболочки, место сохранения может быть настраиваемым или нет. bash и zsh используют переменную HISTFILE (все прописные буквы). Если ваша оболочка настроена правильно, эта переменная не должна быть переменной окружения, поэтому если вы видите ее в env, вы допустили ошибку (но она все равно должна отображаться в выводе set или printf %s\\\\n "$HISTFILE").

Если программа не поддерживает историю (например, ed, сценарии оболочки, использующие read, или старые версии mysql), существует кроссплатформенное приложение под названием rlwrap, которое использует readline для обеспечения bash-подобного завершения табуляции, обработки клавиш со стрелками и истории.

4
27.01.2020, 21:12

Es feo, pero lo uso en sistemas más antiguos con solo sh disponible como hosts ESXi:

cat `printf %s $HISTFILE`
-1
27.01.2020, 21:12

Теги

Похожие вопросы