GNU/Linux >> Belajar Linux >  >> Ubuntu

Bagaimana Mencegah Menyimpan Perintah Bash * dengan * Spasi Di Depan?

Saya membacanya, agar tidak simpan perintah bash ke .bash_history , Anda menempatkan spasi di depan. Ini bekerja pada semua PC Linux tertanam saya tetapi tidak di desktop saya dengan Ubuntu 18.04 LTS. Saya hanya berpikir itu adalah 'quirk' Ubuntu atau sesuatu. Sekarang saya telah menginstal PC kedua dengan Ubuntu 18.04 LTS dan berfungsi seperti yang diharapkan:perintah dengan spasi di depan tidak disimpan!

Jadi mungkin ada yang salah dengan PC pertama dengan Ubuntu 18.04 LTS. Bagaimana saya bisa mengetahui apa yang menyebabkan ini dan memperbaikinya sehingga tidak simpan perintah bash dengan spasi di depan?

Kutipan:

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

Hal-hal yang mungkin berguna:

[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

Jawaban yang Diterima:

Saya kira entah bagaimana di mesin Ubuntu pertama Anda, HISTCONTROL 's nilai telah dikompromikan dengan.

Buka ~/.bashrc di editor, tambahkan ini di akhir file:

HISTCONTROL=ignoreboth

Sekarang jika Anda membuka terminal baru, itu harus mengabaikan menyimpan perintah ke riwayat saat dimulai dengan spasi.

man bash

HISTCONTROL

Daftar nilai yang dipisahkan titik dua yang mengontrol cara perintah disimpan di daftar riwayat. Jika daftar nilai menyertakan abaikan spasi, baris yang dimulai dengan karakter spasi tidak disimpan dalam daftar riwayat. Nilai yang diabaikan menyebabkan baris yang cocok dengan entri riwayat sebelumnya tidak disimpan. Nilai abaikankeduanya adalah singkatan dari abaikan ruang dan terabaikan. Nilai dari erasedups menyebabkan semua baris sebelumnya yang cocok dengan baris saat ini dihapus dari daftar riwayat sebelum baris tersebut disimpan. Nilai apa pun yang tidak ada dalam daftar di atas diabaikan. Jika HISTCONTROL tidak disetel, atau tidak menyertakan nilai yang valid, semua baris yang dibaca oleh parser shell disimpan pada daftar riwayat, tunduk pada nilai HISTIGNORE. Baris kedua dan selanjutnya dari perintah gabungan multi-baris tidak diuji, dan ditambahkan ke riwayat terlepas dari nilai HISTCONTROL.


Ubuntu
  1. Cara Menambahkan Ruang Swap di Ubuntu 18.04

  2. Bagaimana Cara Menentukan Pelengkapan Otomatis Khusus Untuk Perintah Tertentu?

  3. Cara mengubah jumlah perintah yang disimpan di Bash History

  1. Bagaimana cara mendeteksi jika suatu file memiliki BOM UTF-8 di Bash?

  2. Cara mengatur waktu sekelompok perintah di Bash

  3. Bagaimana cara mencegah pengguna sudo menjalankan perintah tertentu?

  1. Cara menggunakan perintah riwayat Bash

  2. Bagaimana menjalankan perintah bash Linux dalam skrip PERL?

  3. Bagaimana Cara Mengubah Cron Shell (sh ke Bash)?