GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak zabránit ukládání příkazů Bash *s* mezerou vepředu?

Četl jsem to, abych ne uložit bash příkazy do .bash_history , dáte mezeru dopředu. Toto fungovalo na všech mých embedded počítačích se systémem Linux, ale ne na mé ploše s Ubuntu 18.04 LTS. Jen jsem si myslel, že je to nějaký „vtip“ Ubuntu nebo tak něco. Nyní jsem nainstaloval druhý počítač s Ubuntu 18.04 LTS a funguje podle očekávání:příkazy s mezerou vpředu se neukládají!

Takže s prvním počítačem s Ubuntu 18.04 LTS je možná něco špatně. Jak mohu zjistit, co to způsobuje, a opravit to, aby nebylo uložit příkazy bash s mezerou vpředu?

Úryvek:

[email protected]:~$ tail -n 5 .bash_history 
./deploy.sh 
./deploy.sh 
upd
 man ls
nano .bash_history 
[email protected]:~$ 

Možná užitečné věci:

[email protected]:~$ cat .bashrc 
alias upd="sudo apt update && sudo apt upgrade && sudo apt autoremove"
export PATH="$PATH:"/opt/microchip/xc8/v1.44/bin""

[email protected]:~$ printenv
CLUTTER_IM_MODULE=xim
LC_MEASUREMENT=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
XDG_MENU_PREFIX=gnome-
KIGITHUB=https://github.com/KiCad
LANG=en_US.UTF-8
MANAGERPID=1252
DISPLAY=:0
INVOCATION_ID=26457eadc1b8429692b7f3bd70c6464f
UNITY_DEFAULT_PROFILE=unity
COMPIZ_CONFIG_PROFILE=ubuntu
GTK2_MODULES=overlay-scrollbar:overlay-scrollbar
GTK_CSD=0
COLORTERM=truecolor
ZEITGEIST_DATA_PATH=/home/mark/.local/share/zeitgeist
USERNAME=mark
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
MANDATORY_PATH=/usr/share/gconf/unity.mandatory.path
LC_NAME=en_US.UTF-8
USER=mark
DESKTOP_SESSION=unity
QT4_IM_MODULE=xim
TEXTDOMAINDIR=/usr/share/locale/
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/24f3cfef_6815_4cfb_8cdc_6c63814db4b6
DEFAULTS_PATH=/usr/share/gconf/unity.default.path
PWD=/home/mark
HOME=/home/mark
JOURNAL_STREAM=9:1719321
TEXTDOMAIN=im-config
QT_ACCESSIBILITY=1
XDG_SESSION_TYPE=x11
COMPIZ_BIN_PATH=/usr/bin/
XDG_DATA_DIRS=/usr/share/unity:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
XDG_SESSION_DESKTOP=unity
LC_ADDRESS=en_US.UTF-8
SSH_AGENT_LAUNCHER=gnome-keyring
LC_NUMERIC=en_US.UTF-8
GTK_MODULES=gail:atk-bridge:unity-gtk-module
PAPERSIZE=letter
WINDOWPATH=3
GNOME_SESSION_XDG_SESSION_PATH=
TERM=xterm-256color
VTE_VERSION=5202
SHELL=/bin/bash
QT_IM_MODULE=ibus
[email protected]=ibus
IM_CONFIG_PHASE=2
XDG_CURRENT_DESKTOP=Unity:Unity7:ubuntu
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GNOME_TERMINAL_SERVICE=:1.617
UNITY_HAS_3D_SUPPORT=true
SHLVL=3
LC_TELEPHONE=en_US.UTF-8
GDMSESSION=unity
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=mark
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000
XAUTHORITY=/run/user/1000/gdm/Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-unity:/etc/xdg
PATH=/home/mark/bin:/home/mark/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/microchip/xc8/v1.44/bin:/opt/microchip/xc8/v1.44/bin:/opt/microchip/xc8/v1.44/bin
LC_IDENTIFICATION=en_US.UTF-8
LD_PRELOAD=libgtk3-nocsd.so.0:libgtk3-nocsd.so.0
SESSION_MANAGER=local/mark:@/tmp/.ICE-unix/19058,unix/mark:/tmp/.ICE-unix/19058
GTK_IM_MODULE=ibus
LC_TIME=en_US.UTF-8

Přijatá odpověď:

Myslím, že nějak na vašem prvním počítači Ubuntu, HISTCONTROL 's hodnota byla ohrožena.

Otevřete ~/.bashrc v editoru přidejte na konec souboru toto:

HISTCONTROL=ignoreboth

Nyní, když otevřete nový terminál, měl by ignorovat ukládání příkazů do historie, když začínají mezerou.

man bash

HISTCONTROL

Seznam hodnot oddělených dvojtečkou, který určuje, jak se příkazy ukládají do seznamu historie. Pokud seznam hodnot obsahuje ignorespace, řádky začínající mezerou se do seznamu historie neuloží. Hodnota ignoredups způsobí, že řádky odpovídající předchozímu záznamu historie nebudou uloženy. Hodnota ignoreboth je zkratka pro ignorespace a ignoredups. Hodnota erasedups způsobí, že všechny předchozí řádky odpovídající aktuálnímu řádku budou odstraněny ze seznamu historie před uložením tohoto řádku. Jakákoli hodnota, která není ve výše uvedeném seznamu, je ignorována. Pokud není HISTCONTROL nastaveno nebo neobsahuje platnou hodnotu, všechny řádky načtené analyzátorem shellu se uloží do seznamu historie s výhradou hodnoty HISTIGNORE. Druhý a následující řádky víceřádkového složeného příkazu nejsou testovány a jsou přidány do historie bez ohledu na hodnotu HISTCONTROL.


Ubuntu
  1. Jak přidat odkládací prostor v Ubuntu 18.04

  2. Jak určit vlastní automatické doplňování pro konkrétní příkazy?

  3. Jak mohu používat aliasované příkazy s xargs?

  1. Jak spustit příkazy bash Linuxu ve skriptu PERL?

  2. Jak zabránit uživatelům sudo ve spouštění konkrétních příkazů?

  3. jak posunout hodnotu pole v bash

  1. Jak změnit Cron Shell (sh to Bash)?

  2. Jak změnit počet příkazů uložených v historii Bash

  3. Jak číst předposlední řádek v souboru pomocí Bash?