Niektóre przypadki bash zmieniają historię poleceń, kiedy ponownie używasz i edytujesz poprzednie polecenie, inne najwyraźniej nie. Szukałem i szukałem, ale nie mogę znaleźć niczego, co mówi, jak zapobiec modyfikowaniu poleceń w historii, gdy są one ponownie używane i edytowane.
Są to pytania, takie jak ten , ale to zdaje się mówić, jak radzić sobie z historią edytowany. Dopiero niedawno natknąłem się na instancję bash, która edytuje historię po ponownym użyciu polecenia - wszystkie poprzednie powłoki bash, których użyłem, zostały (o ile zauważyłem) skonfigurowane tak, aby nie zmieniać historii, gdy ponownie używasz i edytuj polecenie. (Być może po prostu nie zwracałem należytej uwagi na moją historię muszli przez ostatnie 15 lat ...)
To chyba najlepsze pytanie: CZY mogę powiedzieć bash NIGDY nie modyfikować historii - a jeśli tak, to w jaki sposób?
set revert-all-at-newline on
pytanie, które łączysz, nie rozwiązuje twojego problemu? Czy możesz pokazać, jak odtworzyć problem? Pamiętaj, że możesz również użyć zsh
do zachowania bardziej zgodnego z tym, czego chcesz.
history -p
jest czymś, co musiałbym zrobić dla każdego polecenia, którego chcę ponownie użyć - prawda? Jeśli tak, to nie do końca tego szukam. Jak wspomniałem, użyłem wystąpień bash, które nigdy nie modyfikują historii, gdy polecenie jest ponownie używane i edytowane.
revert-all-at-newline
jest dokładnie tym, czego potrzebuję. Jeśli edytuję polecenie i naciskam CTRL-C, aby je anulować, nie chcę też, aby wpłynęło to na historię. Nigdy wcześniej nie musiałem konfigurować bash, aby nie modyfikował historii, co jest częściowo powodem, dla którego jestem zdezorientowany, dlaczego czasami nowa instalacja zachowuje się w jeden sposób, a czasem w inny. Nawiasem mówiąc, w instancji, która nie edytuje historii przy ponownym użyciu polecenia, bind -V | grep revert
wskazuje, że revert-all-at-newline
jest ustawione na „wyłączone”.
bash
. Chodzi o readline. Istnieją różne implementacje readline
biblioteki, a także ma własny zestaw ustawień (DUŻO z nich) i własny plik konfiguracyjny. Nie jestem pewien, czy jest to ustawienie, czy po prostu różnica w implementacji, ale powinieneś szukać w dokumentacji związanej z readline, a nie bash.
history -p
go do rozszerzenia historii bez wpływu na plik historii. Możesz zrobićhistory -s
to samo i dołączyć do historii bez wykonania. Możesz zrobić,HISTIGNORE='start of a command I never want in history.*:command2.*'
aby niektóre polecenia pozostały poza historią.