היום למדתי: מצב גלישה פרטית ב bash
פקודות shell שאנחנו רושמים במסוף נשמרות לזיכרון ובסיום העבודה יישמרו לקובץ בשם ~/.bash_history
. זה נוח כי אפשר לדפדף בהיסטוריה כדי למצוא פקודות ולהריץ אותן שוב, אבל יכול להיות מסוכן אם פקודה מסוימת כוללת מפתחות גישה או סיסמאות (למשל בהפעלה של curl).
מתכנני מנגנון ההיסטוריה ב bash וגם ב zsh כבר חשבו על הבעיה ויצרו פיתרון מובנה - כשמתחילים פקודה בסימן רווח היא לא תישמר בהיסטוריה, בהנחה שהגדרתם נכון את משתנה הסביבה HISTCONTROL
.
ב bash נציג את התוכן של משתנה הסביבה עם:
$ echo $HISTCONTROL
ignoreboth
ערך של ignorespace
או ignoreboth
מציין ששליטה על ההיסטוריה פעילה. אם המשתנה ריק תצטרכו לעדכן אותו ורצוי גם בקובץ .bashrc
עם:
$ export HISTCONTROL=ignoreboth
ב zsh השליטה בפיצ'ר היא באמצעות Shell Option בשם hist_ignore_space
. הפקודה setopt
מדפיסה את כל האופציות המופעלות ואנחנו צריכים את histignorespace
ברשימה:
$ setopt|grep histignorespace
histignorespace
אם זה לא שם תצטרכו לעדכן אותו עם (ורצוי גם בקובץ rc) עם:
$ setopt hist_ignore_space
עכשיו שהכל במקום אפשר לנסות את מצב הפקודה הפרטית החדש שלנו. כתבו פקודה רגילה ושימו לב שהיא מופיעה בהיסטוריה:
$ echo one
one
$ history| tail -1
10010 echo one
ואז פקודה שמתחילה ברווח ובדקו שהיא לא ברשימה:
$ echo two
two
$ history | tail -1
10010 echo one