GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come impedire il salvataggio dei comandi Bash *con* spazio davanti?

L'ho letto, per non salva i comandi bash in .bash_history , metti uno spazio davanti. Questo ha funzionato su tutti i miei PC Linux embedded ma non sul mio desktop con Ubuntu 18.04 LTS. Ho solo pensato che fosse una "stranezza" di Ubuntu o qualcosa del genere. Ora ho installato un secondo PC con Ubuntu 18.04 LTS e funziona come previsto:i comandi con uno spazio davanti non vengono salvati!

Quindi forse c'è qualcosa che non va nel primo PC con Ubuntu 18.04 LTS. Come posso capire cosa sta causando questo problema e risolverlo in modo che non avvenga salvare i comandi bash con spazio davanti?

Estratto:

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

Possibilmente cose utili:

[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

Risposta accettata:

Immagino in qualche modo sulla tua prima macchina Ubuntu, il HISTCONTROL il valore è stato compromesso.

Apri ~/.bashrc in un editor, aggiungi un this alla fine del file:

HISTCONTROL=ignoreboth

Ora, se apri un nuovo terminale, dovrebbe ignorare il salvataggio dei comandi nella cronologia quando iniziano con uno spazio.

man bash

CONTROLLO STORICO

Un elenco di valori separato da due punti che controlla il modo in cui i comandi vengono salvati nell'elenco della cronologia. Se l'elenco di valori include ignorespace, le righe che iniziano con uno spazio non vengono salvate nell'elenco della cronologia. Un valore di ignoreups fa sì che le righe corrispondenti alla voce della cronologia precedente non vengano salvate. Un valore di ignoreboth è un'abbreviazione per ignorespace e ignoreups. Un valore di cancellazioni fa sì che tutte le righe precedenti corrispondenti alla riga corrente vengano rimosse dall'elenco della cronologia prima che quella riga venga salvata. Qualsiasi valore non presente nell'elenco precedente viene ignorato. Se HISTCONTROL non è impostato o non include un valore valido, tutte le righe lette dal parser della shell vengono salvate nell'elenco della cronologia, soggetto al valore di HISTIGNORE. La seconda e le successive righe di un comando composto multiriga non vengono testate e vengono aggiunte alla cronologia indipendentemente dal valore di HISTCONTROL.


Ubuntu
  1. Come specificare un completamento automatico personalizzato per comandi specifici?

  2. Come cambiare Cron Shell (sh To Bash)?

  3. Come leggere la penultima riga in un file usando Bash?

  4. come usare kill SIGUSR2 in bash?

  5. Come elencare le cartelle usando i comandi bash?

Come eseguire uno script Bash {7 metodi}

Come aggiungere spazio di scambio su Ubuntu 18.04

Come aggiungere spazio di scambio su Ubuntu 20.04

Come correggere facilmente i comandi Bash errati in Linux

Come prevenire il timeout di SSH

Come impedire agli utenti sudo di eseguire comandi specifici?