web-dev-qa-db-ja.com

前に*スペース*があるbashコマンドの保存を防ぐ方法

not bashコマンドを.bash_historyに保存するために、前にスペースを入れます。これはすべての組み込みLinux PCで機能しましたが、Ubuntu 18.04 LTSを搭載したデスクトップではnotでした。私はそれがUbuntuの「癖」か何かだと思っただけです。これで、Ubuntu 18.04 LTSを搭載した2台目のPCをインストールしましたが、期待どおりに機能します。前にスペースがあるコマンドは保存されません。

したがって、Ubuntu 18.04 LTSを搭載した最初のPCに問題がある可能性があります。これの原因を特定して修正するにはどうすればよいですかしないでください前にスペースを入れてbashコマンドを保存しますか?

抜粋:

mark@mark:~$ tail -n 5 .bash_history 
./deploy.sh 
./deploy.sh 
upd
 man ls
nano .bash_history 
mark@mark:~$ 

おそらく有用なもの:

mark@mark:~$ cat .bashrc 
alias upd="Sudo apt update && Sudo apt upgrade && Sudo apt autoremove"
export PATH="$PATH:"/opt/microchip/xc8/v1.44/bin""

mark@mark:~$ 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
XMODIFIERS=@im=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
7
Mark Jeronimus

どういうわけか、最初のUbuntuマシンでは、HISTCONTROLの値が危険にさらされています。

開いた ~/.bashrcエディタで、ファイルの最後にthisを追加します。

HISTCONTROL=ignoreboth

新しい端末を開いた場合、コマンドがスペースで始まる場合、コマンドを履歴に保存することを無視する必要があります。

man bash

ヒストコントロール

履歴リストにコマンドを保存する方法を制御する、コロンで区切られた値のリスト。値のリストにignorespaceが含まれている場合、スペース文字で始まる行は履歴リストに保存されません。値がignoredupsの場合、前の履歴エントリに一致する行は保存されません。 ignorebothの値は、ignorespaceおよびignoredupsの省略形です。 erasedupsの値を指定すると、現在の行に一致する以前のすべての行が、その行が保存される前に履歴リストから削除されます。上記のリストにない値は無視されます。 HISTCONTROLが設定されていない場合、または有効な値が含まれていない場合、シェルパーサーによって読み取られたすべての行は、HISTIGNOREの値に従って履歴リストに保存されます。複数行の複合コマンドの2行目以降はテストされず、HISTCONTROLの値に関係なく履歴に追加されます。

8
Ravexina