Предотвратить bash из протоколирования тривиальных команд [duplicate]

Используйте функцию callback() внутри успеха foo(). Попробуйте таким образом. Это просто и легко понять. & nbsp;

var lat = "";
var lon = "";
function callback(data) {
    lat = data.lat;
    lon = data.lon;
}
function getLoc() {
    var url = "http://ip-api.com/json"
    $.getJSON(url, function(data) {
        callback(data);
    });
}

getLoc();
59
задан kenorb 21 March 2015 в 22:54
поделиться

7 ответов

Если вы установили переменную среды HISTCONTROL в ignoreboth (которая обычно задается по умолчанию), команды с символом ведущего пробела не будут сохранены в истории (а также дубликаты).

Например:

$ HISTCONTROL=ignoreboth
$ echo test1
$  echo test2
$ history | tail -n2
 1015  echo test1
 1016  history | tail -n2

Вот что говорит man bash:

HISTCONTROL

Список значений, разделенных двоеточием контролируя, как команды сохраняются в списке истории. Если список значений включает ignorespace, строки, начинающиеся с символа пробела, не сохраняются в списке истории. Значение ignoredups приводит к тому, что строки, соответствующие предыдущей записи истории, не сохраняются. Значение ignoreboth является сокращением для ignorespace и ignoredups. Значение erasedups приводит к тому, что все предыдущие строки, соответствующие текущей строке, будут удалены из списка истории до того, как эта строка будет сохранена. Любое значение, не указанное в приведенном выше списке, игнорируется. Если HISTCONTROL не задано или не содержит допустимого значения, все строки, прочитанные анализатором оболочки, сохраняются в списке истории, при условии значения HISTIGNORE. Вторая и последующая строки многострочной команды соединения не проверяются и добавляются в историю независимо от значения HISTCONTROL.

См. Также:

58
ответ дан Community 4 September 2018 в 10:03
поделиться

Или

unset HISTFILE

(аналогично предыдущему ответу только короче: export HISTFILE = / dev / null)

2
ответ дан aledra 4 September 2018 в 10:03
поделиться

Еще лучше использовать HISTIGNORE. Это позволяет указать набор шаблонов, которые нужно игнорировать (например, rm). Лучше (я думаю), чем просто проложить всю историю до /dev/null

18
ответ дан bmatheny 4 September 2018 в 10:03
поделиться

При запуске оболочки я явно очищаю историю от записей, которые я не хочу быть там. Например, мне не нужна никакая rm -rf в истории (это травма после удаления каталога, полного результатов, обработанных за одну ночь, только с одним Arrow-Up + Enter:)

, который я положил следующий фрагмент в моем файле инициализации (работает с .zshrc, также должен работать с .bashrc)

# ...
HISTFILE=~/.zshhistory
# ...

# remove dangerous entries from the shell history
temp_histfile="/tmp/$$.temp_histfile"
grep -v -P '^rm .*-rf' $HISTFILE > $temp_histfile
mv $temp_histfile $HISTFILE
1
ответ дан Jakub M. 4 September 2018 в 10:03
поделиться

Вы можете сделать одну из двух вещей:

export HISTFILE=/dev/null

Или, начните команду с пробела.

7
ответ дан lesmana 4 September 2018 в 10:03
поделиться

В вашем .bashrc / .bash_profile / где угодно, поставьте export HISTIGNORE=' *'. Затем просто начните любую команду, которую вы хотите игнорировать одним пространством.

$ ls  # goes in history
$  ls # does not
39
ответ дан rhdoenges 4 September 2018 в 10:03
поделиться
kill -9 $$

Я знаю, что это не так хорошо, как указано выше, но это убьет текущую оболочку bash без сохранения чего-либо, полезного, когда HISTCONTROL не будет установлен по умолчанию, вы забыли установить его или просто и просто вы забыли поставить ведущее пространство, и вы просто набрали некоторые пароли и не хотите, чтобы они оставались навсегда в истории, это быстрый способ, что-то вроде стирания файла истории не так хорошо, потому что вам нужно делать это за пределами истории, войдите как пользователь и используйте su / sudo, создайте фоновое задание и т. д.).

2
ответ дан THESorcerer 4 September 2018 в 10:03
поделиться