Почему bash_history всегда подходит то же и не обновляет оболочки невхода в систему использования?

Это сделает это (т.е. мой вывод соответствует Вашему), хотя это является не совсем самым чистым.

regexp's для добавления символов нижнего подчеркивания может, вероятно, быть объединен. Но для сортировки, необходимо продвинуть все выходные строки к списку и затем отсортировать ее (она могла также быть сделана на входящей стороне, но Вам все еще нужно все это в, каждый занимает первое место).

--- test.pl~    2012-07-13 12:04:36.000000000 -0700
+++ test.pl 2012-07-13 12:17:58.000000000 -0700
@@ -1,4 +1,4 @@
-#usr/bin/perl
+#!/usr/bin/perl
 use strict;

 open(FH,"$ARGV[0]");
@@ -18,6 +18,7 @@
     }

    my $i;
+   my @output;
    foreach $i (keys %all){

     my @line=split "\n",$all{$i};
@@ -27,8 +28,15 @@
     my $pos1=$num{$i}-$new_line[3];
     my $pos2=$num{$i}-$new_line[4]; #print $num{$i}; exit;
     $new_line[6] =~ s/\+/-/g;
-    print "$new_line[0]\t$new_line[2]\t$pos1\t$pos2\t$new_line[5]\t$new_line[6]\t$new_line[7]\t$new_line[8]\n";
+    $new_line[0] =~ s/gi/gi_/;
+    $new_line[0] =~ s/gb/_gb_/;
+    $new_line[0] =~ s/_extraction_reversed//;
+    push @output, "$new_line[0]\t$new_line[2]\t$pos1\t$pos2\t$new_line[5]\t$new_line[6]\t$new_line[7]\t$new_line[8]\n";
     }
     }
+    @output = sort (@output);
+    foreach my $out (@output) {
+    print $out;
+    }
     print "###\n";
5
02.09.2013, 04:31
4 ответа

Вы попробовали history -c && history -w ?

history -c очистите кэш от функции истории и history -w запишите команды в кэше функции истории (ничто) в .bash_history.

Другая опция ясна история удара /dev/null > ~/.bash_history и ссылка ~/.bash_history кому: /dev/null: ln -sf /dev/null ~/.bash_history

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

3
27.01.2020, 20:36
  • 1
    Umm... Мне нравится моя история, что я не люблю, то, что она не делает помнит любую из недавних команд, которые я разжигаю. –  Braiam 31.08.2013, 20:16
  • 2
    я не вполне получаю это. Вы имеете в виду то же окно терминала или другое? А-ч –  Michael Durrant 31.08.2013, 21:05
  • 3
    @MichaelDurrant каждый терминал, ни один из них не помнит, каковы мои последние команды были. –  Braiam 01.09.2013, 17:34
  • 4
    Это работало. Это - предназначенное поведение это history -c очищает историю в текущем окне только? –  Mussri 23.06.2017, 03:10

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

Для тестирования этого сценария попробовать history -a после некоторой уникальной команды, как echo abacaba на рабочей оболочке и затем запускают новую оболочку. Если новая оболочка получает обновления сначала, то запись и чтение файла истории работают. Однако, если бы это не работает, что-то еще неправильно, и я лично использовал бы strace в попытке диагностировать.

Другая вещь проверить состоит в том, что ДОМАШНЯЯ переменная не изменилась и установлена на тот же путь, как начато passwd файл для пользователя.

Используя strace для диагностирования

  • в оболочке, echo abacaba; echo $$
  • в другой оболочке, strace -o e -s 256 -p $PID, где $PID = $$ вывод от первой оболочки
  • в первой оболочке, history -a
  • остановите strace и просмотрите его для обработки history -a; там должно быть открыто () и запись () вызовы.

Неинтерактивные оболочки

Это нечетно, что неинтерактивные оболочки не получают историю оболочки, но это могло быть объяснено многими вещами. Больше диагностики поможет.

Strace может снова использоваться для помощи на том конце, если запуск неинтерактивных оболочек может быть изменен для вставки strace. Например, следующие шоу команда запуска оболочки, измененная для использования strace:

bash /home/jack/bin/jacks_script
strace -f -o /tmp/e -s 512 bash /home/jack/bin/jacks_script

Конечно, если больше чем одно из этих выполнений за один раз, /tmp/e будет перезаписан.

Используя grep open /tmp/e, полный путь в bash_history файл должен обнаружиться, если оболочка загружается он. Так, эта команда позволяет две проверки: (1) то, что файл истории открывается и читается и (2) то, что путь к файлу истории как ожидалось.

Без strace

Проверьте, что оболочка имеет history набор опции (set -o history для удара).

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

3
27.01.2020, 20:36
  • 1
    Выполнил команды, как Вы предположили, посмотрите мой вопрос для обновления. –  Braiam 01.09.2013, 17:45
  • 2
    Получил его. Это помогло. Это также помогло бы видеть, как оболочки запускаются. Мне любопытно, почему Вы называете некоторых неинтерактивными оболочками; это могло бы привести к ответу. –  ash 02.09.2013, 02:38
  • 3
    Извините, я смешиваю со мной, вместо этого неинтерактивная невход в систему (терминал гнома), который помнит/пишет в файлы истории. терминал гнома –  Braiam 02.09.2013, 03:29
  • 4
    ; я никогда не использовал его; я - xterm пользователь сам. Я проверю его. –  ash 02.09.2013, 03:34
  • 5
    Это работало; не действительно удивленный. Можно ли выполнить терминал гнома вручную, просто выполнив его от оболочки (даже из другого терминала гнома)? Если так, и проблема сохраняет тот путь, strace -o /tmp/e -s 512 gnome-terminal поможет. –  ash 02.09.2013, 03:36

Можно просто сбросить $HISTFILE (который содержит путь к файлу истории), который не будет влиять на Вашу способность использовать историю на текущей сессии:

unset HISTFILE
1
27.01.2020, 20:36
  • 1
    я хочу историю, просто что это является персистентным и новые команды, не становится зарегистрированным. большое спасибо –  Braiam 31.08.2013, 20:17

Что я закончил, выполнение устанавливало HISTFILESIZE к 0 в .bashrc файл, как Drav Sloan сказал в комментариях.

[...]
HISTFILESIZE=0
[...]
1
27.01.2020, 20:36
  • 1
    К сожалению, который не делает устранил проблему. –  Braiam 01.09.2013, 18:22

Теги

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