GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie verhindert man das Speichern von Bash-Befehlen *mit* Leerzeichen davor?

Ich habe das gelesen, um nicht Bash-Befehle in .bash_history speichern , setzen Sie ein Leerzeichen voran. Dies funktionierte auf allen meinen eingebetteten Linux-PCs, aber nicht auf meinem Desktop mit Ubuntu 18.04 LTS. Ich dachte nur, es wäre eine Ubuntu-Eigenart oder so. Jetzt habe ich einen zweiten PC mit Ubuntu 18.04 LTS installiert und es funktioniert wie erwartet:Befehle mit einem Leerzeichen davor werden nicht gespeichert!

Möglicherweise stimmt also etwas nicht mit dem ersten PC mit Ubuntu 18.04 LTS. Wie kann ich herausfinden, was dies verursacht, und es beheben, damit es nicht passiert Bash-Befehle mit Leerzeichen davor speichern?

Auszug:

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

Möglicherweise nützliche Sachen:

[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

Akzeptierte Antwort:

Ich tippe irgendwie auf deinen ersten Ubuntu-Rechner, den HISTCONTROL Wert wurde kompromittiert mit.

Öffnen Sie ~/.bashrc fügen Sie in einem Editor ein this am Ende der Datei hinzu:

HISTCONTROL=ignoreboth

Wenn Sie jetzt ein neues Terminal öffnen, sollte es das Speichern von Befehlen im Verlauf ignorieren, wenn sie mit einem Leerzeichen beginnen.

man bash

HISTCONTROL

Eine durch Doppelpunkte getrennte Liste von Werten, die steuern, wie Befehle in der Verlaufsliste gespeichert werden. Wenn die Werteliste Ignorespace enthält, werden Zeilen, die mit einem Leerzeichen beginnen, nicht in der Verlaufsliste gespeichert. Ein Wert von ignoreups bewirkt, dass Zeilen, die mit dem vorherigen Verlaufseintrag übereinstimmen, nicht gespeichert werden. Der Wert "ignoreboth" ist eine Abkürzung für "ignorespace" und "ignoredups". Der Wert erasedups bewirkt, dass alle vorherigen Zeilen, die mit der aktuellen Zeile übereinstimmen, aus der Verlaufsliste entfernt werden, bevor diese Zeile gespeichert wird. Alle Werte, die nicht in der obigen Liste enthalten sind, werden ignoriert. Wenn HISTCONTROL nicht gesetzt ist oder keinen gültigen Wert enthält, werden alle vom Shell-Parser gelesenen Zeilen abhängig vom Wert von HISTIGNORE in der Verlaufsliste gespeichert. Die zweite und die folgenden Zeilen eines mehrzeiligen zusammengesetzten Befehls werden nicht getestet und unabhängig vom Wert von HISTCONTROL zum Verlauf hinzugefügt.


Ubuntu
  1. Wie kann ich eine benutzerdefinierte Autovervollständigung für bestimmte Befehle angeben?

  2. Wie kann ich Alias-Befehle mit xargs verwenden?

  3. Wie liest man die vorletzte Zeile in einer Datei mit Bash?

  4. wie benutzt man kill SIGUSR2 in bash?

  5. Wie listet man Ordner mit Bash-Befehlen auf?

So verwenden Sie Bash-Verlaufsbefehle

So führen Sie ein Bash-Skript aus {7 Methoden}

So fügen Sie Swap Space unter Ubuntu 18.04 hinzu

So fügen Sie Swap Space unter Ubuntu 20.04 hinzu

So korrigieren Sie einfach falsch geschriebene Bash-Befehle in Linux

So verhindern Sie ein Timeout von SSH