Автоматически исправить путь при запуске команды из истории?

Я выполняю рекурсивный поиск, чтобы найти команду, которую я выполнил несколько дней назад, и я хочу ее запустить. Однако эта команда должна запускаться с пути, из которого я запускал его ранее, а не там, где я сейчас.

Возможно ли, чтобы zsh это и изменил команду на полный путь и выполнил мой текущий путь? или, может быть, fork переключение процесса на исходный путь запустит его и вернется?

2 Solutions collect form web for “Автоматически исправить путь при запуске команды из истории?”

Исходный каталог, в котором выполнялась команда, не записывается в историю.

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

Связанное чтение: zsh history – полный путь ; Могу ли я иметь историю истории оболочки, как расширяются шаблоны?

В большинстве случаев это фактически было бы нежелательным действием. Часто, когда я повторно запускаю команду, специально запускать их в моем текущем контексте. Запуск команды history и ее действие над чем-то другим, кроме текущей папки, могут даже иметь неожиданные и нежелательные побочные эффекты.

Я бы предложил придерживаться другого подхода. Сначала определите, какая команда должна быть специально олова из определенного места, а затем спросите себя, почему они такие, и исправьте их, используя стандартные шаблоны.

  • Если им нужно загружать библиотеки из ресурсов, которые находятся по пути относительно исполняемого файла, исправьте их, чтобы они знали, где их найти, используя такие вещи, как dirname и $0 .

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

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

  • встроенные условия для назначения
  • Команда ведет себя по-разному при сохранении в файле * .sh
  • Режим vi не отображается корректно на новом терминале
  • ZSH: `ls * (.)` Перечисляет только обычные файлы, но `ls * (/)` не перечисляет только каталоги
  • Как создать псевдоним для zsh?
  • zsh продолжает забывать PATH vars
  • Сделать zkbd игнорировать $ DISPLAY
  • В чем разница между тем, где и где
  • Получить zsh не для завершения работы пользователей
  • zsh: команда map для массива
  • Zsh: автоматическое изменение выполняемой команды
  • Interesting Posts

    Как скопировать файлы из папки без самой папки

    Функция Shell, чтобы проверить, есть ли приостановленный процесс, являющийся дочерним элементом этой оболочки?

    Что может сделать передачу init = / path / to / program в ядро, а не запускать программу как init?

    Как напечатать имя отсутствующих файлов в папке?

    Как узнать, в какой файловой системе вы работаете?

    Исправить цвета LS для каталогов с разрешением 777?

    Почему time / ident / daytime / comsat запускается после установки OpenBSD 5.2?

    Как использовать логический ИЛИ в поиске?

    Формирование трафика с графическим интерфейсом

    В то время как Loop Breaking Half Way Through File

    Использование процессора Oracle VM на 100%, даже если назначено только 3 из 4 ядер

    Ярлык для минимизации всех окон?

    Как совместимы системные утилиты GNU с Linux?

    Заменить значения некоторых ключей в текстовом файле с одной строкой

    Интерактивная команда дерева

    Linux и Unix - лучшая ОС в мире.