Используйте функцию 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();
Если вы установили переменную среды HISTCONTROL
в ignoreboth
(которая обычно задается по умолчанию), команды с символом ведущего пробела не будут сохранены в истории (а также дубликаты).
Например:
$ HISTCONTROL=ignoreboth
$ echo test1
$ echo test2
$ history | tail -n2
1015 echo test1
1016 history | tail -n2
Вот что говорит man bash
:
HISTCONTROL
Список значений, разделенных двоеточием контролируя, как команды сохраняются в списке истории. Если список значений включает
blockquote>ignorespace
, строки, начинающиеся с символа пробела, не сохраняются в списке истории. Значениеignoredups
приводит к тому, что строки, соответствующие предыдущей записи истории, не сохраняются. Значениеignoreboth
является сокращением дляignorespace
иignoredups
. Значениеerasedups
приводит к тому, что все предыдущие строки, соответствующие текущей строке, будут удалены из списка истории до того, как эта строка будет сохранена. Любое значение, не указанное в приведенном выше списке, игнорируется. ЕслиHISTCONTROL
не задано или не содержит допустимого значения, все строки, прочитанные анализатором оболочки, сохраняются в списке истории, при условии значенияHISTIGNORE
. Вторая и последующая строки многострочной команды соединения не проверяются и добавляются в историю независимо от значенияHISTCONTROL
.См. Также:
Или
unset HISTFILE
(аналогично предыдущему ответу только короче: export HISTFILE = / dev / null)
Еще лучше использовать HISTIGNORE
. Это позволяет указать набор шаблонов, которые нужно игнорировать (например, rm
). Лучше (я думаю), чем просто проложить всю историю до /dev/null
При запуске оболочки я явно очищаю историю от записей, которые я не хочу быть там. Например, мне не нужна никакая 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
Вы можете сделать одну из двух вещей:
export HISTFILE=/dev/null
Или, начните команду с пробела.
В вашем .bashrc / .bash_profile / где угодно, поставьте export HISTIGNORE=' *'
. Затем просто начните любую команду, которую вы хотите игнорировать одним пространством.
$ ls # goes in history
$ ls # does not
kill -9 $$
Я знаю, что это не так хорошо, как указано выше, но это убьет текущую оболочку bash без сохранения чего-либо, полезного, когда HISTCONTROL не будет установлен по умолчанию, вы забыли установить его или просто и просто вы забыли поставить ведущее пространство, и вы просто набрали некоторые пароли и не хотите, чтобы они оставались навсегда в истории, это быстрый способ, что-то вроде стирания файла истории не так хорошо, потому что вам нужно делать это за пределами истории, войдите как пользователь и используйте su / sudo, создайте фоновое задание и т. д.).