История команд не включена в скриптах. Даже если вы включите его, сценарий не будет иметь доступа к истории вызывающей его интерактивной оболочки.
Вместо написания сценария создайте функцию и поместите ее в свой .bashrc
.
Кроме того, вместо выполнения команды в отдельном экземпляре bash вам, вероятно, следует использовать встроенную функцию eval
для ее выполнения в том же контексте (в частности, с теми же переменными оболочки).
Ваш подход с расширением истории работает только для простых команд; команды, содержащие специальные символы, приведут к синтаксическим ошибкам или другому непредусмотренному поведению. Используйте встроенную команду fc
для программного доступа к истории.
reexecute () {
eval "$(fc -l -1 | sed …)"
}
Каждая сетевая карта имеет уникальный MAC-адрес (08:00 :27:66 :ca :5e на скриншоте ). Сетевой код IPv6 в Linux автоматически назначает специальный адрес IPv6, начинающийся с fe80 ::и состоящий из MAC-адреса сетевой карты (fe80 ::a 0027:fe 66 :ca5e на том же скриншоте ). Этот IPv6-адрес используется для поиска сетевого маршрутизатора IPv6 и запроса глобального IPv6-адреса (. Это почти то же самое, что и получение IPv4-адреса через протокол динамической конфигурации, также известный как DHCP ).
Проще говоря, у вас нет ни реального адреса, назначенного вашей сетевой карте (, ни IPv4, ни IPv6 ).
Вам необходимо настроить VMware или VirtualBox для предоставления службы DHCP для автоматического назначения IP-адресов вашим виртуальным машинам, или вам придется назначать IP-адреса вручную.