GNU/Linux >> Linux の 問題 >  >> Ubuntu

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

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

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

抜粋:

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

おそらく役に立つもの:

[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

承認された回答:

どういうわけか、最初のUbuntuマシン、HISTCONTROL の価値は妥協されました。

~/.bashrcを開きます エディターで、ファイルの最後にこれを追加します:

HISTCONTROL=ignoreboth

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

man bash

HISTCONTROL

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


Ubuntu
  1. Ubuntu18.04でスワップスペースを追加する方法

  2. cronシェルを変更する方法(shからBash)?

  3. Bash履歴に保存されるコマンドの数を変更する方法

  1. Bashを使用してファイルの最後から2番目の行を読み取る方法は?

  2. bashでkill SIGUSR2を使用するには?

  3. sudo ユーザーが特定のコマンドを実行できないようにする方法は?

  1. Bash履歴コマンドの使用方法

  2. LinuxのbashコマンドをPERLスクリプトで実行する方法は?

  3. bashで配列値をシフトする方法