ประวัติทุบตีถูกตัดเหลือ 500 บรรทัดในการเข้าสู่ระบบแต่ละครั้ง


21

ด้วยเหตุผลบางอย่างฉันไม่สามารถทำให้ระบบเก็บประวัติ BASH ของฉันหลังจากรีบูตได้ นี่คือส่วนที่เกี่ยวข้องของฉัน~/.bashrc:

shopt -s histappend
PROMPT_COMMAND='history -a; updateWindowTitle'
export HISTCONTROL=ignoredups
export HISTSIZE=9999
export HISTFILESIZE=999999
export HISTFILE="$HOME/.bash_history"

เท่าที่ฉันสามารถบอกได้ว่าสิ่งเหล่านี้เป็นตัวเลือกที่จำเป็นทั้งหมด (ฉันรู้ว่าฉันเคยสามารถเก็บประวัติในการรีบูตหลาย ๆ ครั้งโดยที่ไม่ต้องผ่านมาทั้งหมด) อย่างไรก็ตามแม้จะมีการเพิ่มตัวเลือกเหล่านี้หลายครั้งที่รีบูตที่ผ่านมาฉันยังหลวมประวัติส่วนใหญ่ของฉันหลังจากรีบูต มันไม่ได้ว่างเปล่า แต่มันไม่ได้มี 9999 บรรทัดก่อนที่จะรีบูต

ก่อนที่ใครจะบ่นใช่ฉันได้อ่านคำถามเหล่านี้แล้ว ฉันได้ดำเนินการตามคำแนะนำของพวกเขาตามที่ระบุไว้ข้างต้นส่วนที่เหลือไม่ช่วยเหลือหรือไม่เกี่ยวข้อง:

ในโอกาสปิดว่าอาจจะมีคำสั่งอื่น ๆ ที่เกี่ยวข้องในการมีคุณสามารถดูทั้งหมดของฉันที่นี่~/.bashrc

แล้วฉันจะพลาดอะไร ทำไมประวัติของฉันถึงไม่ถูกบันทึก? หากใครคิดว่าไฟล์อื่นอาจมีความเกี่ยวข้องแจ้งให้เราทราบและฉันจะโพสต์มัน ฉันจะตรวจสอบโดยการทำงานgrep -i hist \.*ในของฉัน$HOMEซึ่งแสดงให้เห็นว่าเกี่ยวข้องเฉพาะ.ไฟล์ที่มีสตริงhistหรือเป็นHIST.bashrc

ผมใช้ลินุกซ์มิ้นท์เดฉบับ GNU ทุบตี, รุ่น 4.2.36 (1) -release (x86_64-PC-ลินุกซ์ GNU) และจำลอง terminal ที่ชื่นชอบ (ในกรณีที่เกี่ยวข้อง) terminatorเป็น


UPDATE:

การติดตามคำแนะนำของ @ mpy ในความคิดเห็นฉันเปลี่ยน~/.bashrcการตั้งค่าของฉันHISTFILE=~/bash_historyซึ่งตรงข้ามกับค่าเริ่มต้น~/.bash_historyและดูเหมือนว่าจะแก้ปัญหาสำหรับเชลล์แบบโต้ตอบได้ เชลล์ล็อกอินยังคงแสดงลักษณะการทำงานเดียวกันโดยประวัติถูกตัดทอนที่500บรรทัด อย่างไรก็ตามไม่มีการHISTตั้งค่าตัวแปรที่เกี่ยวข้องในไฟล์ที่เกี่ยวข้อง:

$ for f in /etc/profile ~/.profile ~/.bash_profile ~/.bash_login; do \
   echo -ne "$f :"; echo `grep HIST $f`; \
done
/etc/profile :
/home/terdon/.profile :grep: /home/terdon/.profile: No such file or directory
/home/terdon/.bash_profile :grep: /home/terdon/.bash_profile: No such file or directory
/home/terdon/.bash_login :grep: /home/terdon/.bash_login: No such file or directory
$ grep -r HIST /etc/profile.d/  <-- returns nothing

ดังนั้นทำไมการตั้งค่าHISTSIZEและHISTFILESIZEใน~/.bashrcไม่พอยกเว้นฉันตั้งอย่างชัดเจน$HISTFILEเพื่อสิ่งอื่นที่ไม่ใช่ค่าเริ่มต้น~/.bash_history?


คุณเป็นเจ้าของ. bash_history หรือรูทหรือไม่ ทำ ls -l .bash_history
Adnan Bhatti

1
@MSStp ใช่มันเป็นของฉัน ขอบคุณสำหรับคำแนะนำ แต่ฉันไม่เห็นว่ามันจะเป็นปัญหาสิทธิ์อย่างไรทั้งฉันได้อ่าน / เขียนการเข้าถึงหรือไม่ เนื่องจากบันทึกประวัติศาสตร์บางอย่างฉันจึงทำอย่างชัดเจน หากทุบตีมีการตั้งค่าที่ทำให้เกิดปัญหาเมื่อไฟล์นี้ไม่ได้เป็นของผู้ใช้มันจะบ่นหรือฟังก์ชั่นประวัติทั้งหมดจะไม่ทำงาน
terdon

เมื่อคุณรันhistoryคำสั่งเอาต์พุตที่คุณเห็นจะเหมือนกับสิ่งที่คุณเห็นรันอยู่cat .bash_historyนอกเหนือจากหมายเลขบรรทัด? ฉันหมายถึงการhistoryประทับเวลารายการคำสั่งหรือข้อมูลอื่น ๆ หรือไม่? เหตุผลที่ฉันถามคือถ้าคุณเห็นสิ่งลึกลับเหล่านี้หมายความว่ามีอีกโมดูล / ฟังก์ชั่น / โปรแกรมซึ่งยุ่งกับประวัติเชลล์และรุ่นผิดหรือ buggy ของสิ่งที่มันอาจจะทำให้คุณเศร้าโศก .
MelBurslan

@Mel_Burslan ใช่มันเหมือนกันความแตกต่างเพียงอย่างเดียวคือหมายเลขบรรทัด
terdon

2
ตกลงข้อเสนอแนะที่ค่อนข้างแปลก แต่มันเป็นปัญหา weired เกินไป;): ลองไฟล์อื่นเป็น HISTFILE ~/.bash_historyไม่เริ่มต้น คำอธิบายที่สร้างขึ้นมาก: ฉันถือว่า bash เป็นเชลล์เริ่มต้นของคุณดังนั้นเมื่อระบบเริ่มเชลล์ที่ไม่ต้องมีการโต้ตอบเป็นพาเรนต์ของเซสชัน X ของคุณ (ฉันสมมติว่าคุณใช้ X) ซึ่งจะไม่รู้อะไรเลยเกี่ยวกับตัวเลือก histappend (เนื่องจาก. bashrc เท่านั้น อ่านโดยเชลล์อินเทอร์แอคทีฟ) ดังนั้นตราบใดที่พาเรนต์เชลล์นี้รันทุกอย่างเรียบร้อย แต่เมื่อมีการยกเลิก (เช่นระบบหยุด) มันจะแทนที่~/.bash_history(ซึ่งเป็นค่าเริ่มต้น) และทำให้ประวัติของคุณ
ยุ่งเหยิง

คำตอบ:


16

ปัญหาเดือดจริง ๆ กับพฤติกรรมที่แตกต่างกันของการล็อกอินและเชลล์ที่ไม่ใช่การล็อกอิน ~/.bahsrcฉันได้ตั้งค่าตัวแปรที่ควบคุมในประวัติศาสตร์ของฉัน ไฟล์นี้ไม่ได้ถูกอ่านเมื่อเริ่มเชลล์การเข้าสู่ระบบมันจะอ่านได้โดยเชลล์แบบโต้ตอบและไม่ใช่การเข้าสู่ระบบเท่านั้น (จากman bash):

เมื่อ bash ถูกเรียกใช้เป็นเชลล์ล็อกอินแบบโต้ตอบหรือเป็นเชลล์ที่ไม่มีการโต้ตอบพร้อมกับ--loginตัวเลือกมันจะอ่านและเรียกใช้คำสั่งจากไฟล์/etc/profileก่อนหากไฟล์นั้นมีอยู่ หลังจากอ่านไฟล์ดังกล่าวแล้วมันจะมองหา ~ / .bash_profile ~/.bash_loginและ~/.profileในลำดับนั้นและอ่านและดำเนินการคำสั่งจากไฟล์แรกที่มีอยู่และอ่านได้ --noprofileตัวเลือกที่อาจจะนำมาใช้เมื่อเปลือกจะเริ่มต้นในการยับยั้งการทำงานนี้

[ . . ]

เมื่อเชลล์เชิงโต้ตอบที่ไม่ใช่เชลล์ล็อกอินเริ่มทำงาน bash จะอ่านและดำเนินการคำสั่งจาก ~ / .bashrc หากไฟล์นั้นมีอยู่ สิ่งนี้อาจถูกยับยั้งโดยใช้ตัวเลือก --norc ตัวเลือกไฟล์ --rcfile จะบังคับให้ทุบตีเพื่ออ่านและดำเนินการคำสั่งจากไฟล์แทน ~ / .bashrc

ดังนั้นทุกครั้งที่ฉันเข้าสู่ระบบหรือลดลงถึง tty หรือใช้ ssh .historyไฟล์จะถูกตัดทอนเพราะฉันไม่ได้ตั้งขนาดที่เหมาะสม~/.profileเช่นกัน ในที่สุดฉันก็รู้สิ่งนี้และตั้งค่าตัวแปรใน~/.profile ที่ที่พวกเขาอยู่แทน~/.bashrc

เหตุผลที่ฉัน~/.historyถูกตัดทอนเพราะฉันได้ตั้งค่าตัวแปรประวัติในไฟล์ที่อ่านโดยเชลล์แบบโต้ตอบและไม่ใช่การเข้าสู่ระบบดังนั้นทุกครั้งที่ฉันรันเชลล์ชนิดต่าง ๆ ตัวแปรจะถูกละเว้นและไฟล์จะถูกตัด ตาม


จุดดีมากขอบคุณสำหรับการแบ่งปัน! อย่างไรก็ตามฉันไม่เห็นด้วยกับ: ไฟล์นี้ไม่ได้อ่านเมื่อมีใครเริ่มเชลล์การเข้าสู่ระบบมันจะอ่านโดยเชลล์แบบโต้ตอบเท่านั้น เนื่องจากเชลล์ล็อกอินสามารถโต้ตอบได้เช่นกัน มิฉะนั้นกลไกประวัติศาสตร์ทั้งหมดจะไม่สมเหตุสมผล IMHO .bashrcไม่ได้ถูกอ่านโดย (เชลล์ที่ไม่ใช่แบบโต้ตอบหรือล็อกอิน)
mpy

@mpy ขออภัยฉันหมายถึงเชลล์แบบโต้ตอบและไม่ใช่การเข้าสู่ระบบ แก้ไขคำตอบแล้ว
terdon

1
@terdon สำนวนที่พบบ่อยคือตัวเลือกเชลล์แบบโต้ตอบไม่ได้อยู่ใน ~ / .profile หรือ ~ / .bash_profile ตัวเลือกเชลล์แบบโต้ตอบถูกใส่เข้าไปใน ~ / .bashrc เพื่อหลีกเลี่ยงการคงการตั้งค่าในสองแห่งคำสั่งต่อไปนี้อาจถูกวางไว้ที่ด้านบนของ ~ / .bash_profile: export BASH_ENV=~/.bashrc ; if [ -f ~/.bashrc ]; then . ~/.bashrc; fi... และที่ด้านบนของ ~ / .bashrc ให้ทำการตรวจสอบเพื่อให้แน่ใจว่าคุณกำลังทำงานแบบโต้ตอบจริงๆ: [ -z "$PS1" ] && return... แน่นอนมันเป็นแค่สำนวน
Noah Spurrier

1
@NahahSpurrier BASH_ENVไม่เกี่ยวข้องมันมีผลกับเชลล์ที่ไม่ต้องโต้ตอบเท่านั้น สำหรับ "สำนวน" มันเป็นสิ่งที่เดเบียนเริ่มต้นและที่ฉันเองไม่เห็นด้วย ฉันมักจะมีตัวเลือกกราฟิก ( xsetและชอบ) ใน .bashrc ของฉันและฉันไม่ต้องการให้ผู้ใช้งานเมื่อใช้เปลือกหอยเข้าสู่ระบบทั้งจาก TTY sshหรือผ่าน ฉันต้องการ. profile และ. bashrc แยกกัน หลายคน (แม้ว่าจะไม่ทั้งหมด) ตัวจัดการการเข้าสู่ระบบที่มา. profile เมื่อคุณเข้าสู่ระบบดังนั้นตัวแปรทั่วโลกจะถูกตั้งค่าที่ดีที่สุดที่พวกเขาจะถูกอ่านเพียงครั้งเดียวและไม่ใช่ทุกครั้งที่คุณเปิดเทอร์มินัล
terdon

1
@ Wilsonson ใช่ ไฟล์จะถูกอ่านตามลำดับและไฟล์ส่วนบุคคล ( ~/.profileหรือ~/.bashrc) จะอ่านล่าสุด สิ่งใดก็ตามที่อยู่ในชุดนั้นจะมีความสำคัญมากกว่าการตั้งค่าทั่วโลก /etc/bash.bashrcคุณกำลังค่อนข้างขวาคุณไม่ควรได้รับการตั้งค่าตัวแปรเหล่านั้นใน ใช้~/.profile(หรือ~/.bash_profile) แทน
terdon

11

ข้อเสนอแนะของฉันคือการใช้ไฟล์อื่นเป็นไม่ได้เริ่มต้นHISTFILE~/.bash_history

แม้ว่าฉันจะไม่มีคำอธิบายเชิงวิเคราะห์ แต่ฉันจะพยายามอธิบายสิ่งที่ทำให้ฉันแนะนำ: ถ้าคุณใช้bashเป็นค่าเริ่มต้น (เข้าสู่ระบบ) เชลล์และใช้X(ซึ่งทั้งสองเป็นไปได้มาก) คุณมีbashอินสแตนซ์ที่ทำงานหลังจาก ) เข้าสู่ระบบ:

systemd
 ...
  |-login
  |   `-bash      <<====
  |       `-slim
  |           |-X -nolisten tcp vt07 -auth /var/run/slim.auth
  |           |  `-{X}
  |           `-fluxbox
  |               `-xterm -bg black -fg white
  |                   `-bash
 ...

ฉันคิดว่ากรณีนี้เป็นเปลือกเข้าสู่ระบบดังนั้นจึงไม่อ่านของคุณ~/.bashrcและด้วยเหตุนี้จะไม่ทราบอะไรเกี่ยวกับhistappendตัวเลือก:

man bash (1) : เมื่อเชลล์เชิงโต้ตอบที่ไม่ใช่เชลล์ล็อกอินเริ่มทำงาน bash จะอ่านและดำเนินการคำสั่งจาก /etc/bash.bashrc และ ~ / .bashrc หากมีไฟล์เหล่านี้อยู่ ( ... )

ตราบใดที่ "parent shell" นี้ทำงานทุกอย่างก็โอเค แต่เมื่อมีการยกเลิก (เช่นระบบหยุด) มันจะแทนที่~/.bash_history(เพราะนั่นคือค่าเริ่มต้น) และทำให้ประวัติของคุณยุ่งเหยิงหรือคลิปบนระบบเริ่ม (เริ่มต้นอีกครั้ง) 500 เส้น (หรืออาจทั้งสอง ... )

มันทำให้ฉัน~/.bashrcประทับใจเช่นกันว่ามันไม่เพียงพอที่จะรวมการกำหนดค่าประวัติในเนื่องจากไม่ควรมีการตั้งค่าที่ผิดปกติ ฉันไม่มีคำอธิบายสำหรับสิ่งนั้น


เกี่ยวกับปัญหาของคุณว่า "เชลล์ล็อกอินยังคงแสดงลักษณะการทำงานเดียวกัน" คุณสามารถลองรวมการกำหนดค่าประวัติด้วยใน~/.bash_profile:

man bash (1) : เมื่อ bash ถูกเรียกใช้เป็นเชลล์ล็อกอินแบบโต้ตอบหรือเป็นเชลล์แบบไม่โต้ตอบที่มีตัวเลือก --login มันจะอ่านและเรียกใช้คำสั่งจากไฟล์ / etc / profile ก่อนหากไฟล์นั้นมีอยู่ หลังจากอ่านไฟล์ดังกล่าวจะค้นหา ~ / .bash_profile, (... )

น่าเสียดายที่ฉันไม่สามารถโพสต์คำอธิบายที่มีเหตุผลมากขึ้นโดยมีรายละเอียดจากการกำหนดค่าของฉันเองbashเนื่องจากฉันเป็นzshคนที่ ...


2
การตั้งค่าตัวเลือกประวัติอย่างชัดเจนในการ~/.bash_profileแก้ไขปัญหาของฉัน ตอนนี้ผมใช้~/.bash_historyเป็นแฟ้มประวัติของฉัน แต่ได้เพิ่มเพียงแค่ทุกสายจากที่แสดงในคำถามของฉันไป~/.bashrc ~/.bash_profileยังไม่แน่ใจว่าใครเป็นคนไขน็อตโต้ตอบ แต่ดูเหมือนว่ามันจะทำงานได้ในตอนนี้ขอบคุณ!
terdon

1
ขออภัยที่จะไม่ยอมรับ แต่ฉันลืมที่จะโพสต์คำตอบอธิบายสิ่งที่เกิดขึ้น ฉันหาคำตอบได้ด้วยความช่วยเหลือจาก @Gilles เมื่อไม่นานมานี้และในที่สุดก็มีการโพสต์คำตอบ ฉันต้องการยอมรับของฉันเพราะจริงๆแล้วมันอธิบายปัญหาแทนที่จะเสนอวิธีแก้ปัญหา (ดีมาก) และสามารถช่วยผู้เยี่ยมชมในอนาคตได้
terdon

2

เนื่องจากการตั้งค่าทั้งหมดของคุณเป็นไปตามหน้า man และเนื่องจากไฟล์ประวัติไม่ถูก จำกัด โดยขนาด (ไบต์) คำอธิบายที่เป็นไปได้เพียงอย่างเดียวที่ฉันสามารถนึกได้ มันเกี่ยวข้องกับการที่เปลือกตาย

ตามการอ้างอิงออนไลน์การออกที่ดี (บันทึกประวัติ) จะเกิดขึ้นเมื่อเชลล์ได้รับ SIGHUP ฉันไม่สามารถอธิบายได้ว่าระบบของคุณเผยแพร่สัญญาณอย่างไรเมื่อรีบูตเครื่อง แต่ฉันสงสัยว่าเชลล์ของคุณหยุดทำงานกับ SIGKILL หรือ SIGPWR

อาจเป็นเพราะ WM ของคุณทำงานแบบอะซิงโครนัส (รอ) และเทอร์มินัลอีมูเลเตอร์วางไข่จาก WM ที่ bash ได้รับสัญญาณออกจากการบังคับใช้นอกเหนือจาก SIGHUP อาจเป็นไปได้ว่าระบบปฏิบัติการคือการส่ง "ขั้นตอนสุดท้าย" ไปยังกระบวนการทั้งหมดอย่างรวดเร็วก่อนที่ SIGHUP อันสง่างามจะจัดการเพื่อไปยังเชลล์ผ่าน X -> WM -> xterm อาจเป็นเพราะ X หรือ WM ใช้เวลานานกว่าในการออก มันใช้เวลาสำหรับระบบปฏิบัติการที่จะพร้อมที่จะลง

ฉันอยู่ในน่านน้ำลึกกับสิ่งนี้ แต่ฉันคิดว่าบางสิ่งตามแนวเหล่านั้นทำให้เกิดพฤติกรรมที่ผิดปกติ ฉันเคยมีปัญหานี้มาก่อนและวิธีการรักษาที่ดีที่สุดก็คือการexitทุบตีที่คุณต้องการเก็บประวัติ

ฉันสังเกตเห็นhistory -aในคำถามของคุณและฉันไม่สามารถคิดได้ว่าทำไมถึงไม่เพียงพอที่จะรักษาประวัติศาสตร์

คุณสามารถแก้ไขปัญหาได้ด้วยการหาว่าอะไรที่ฆ่าทุบตีของคุณและย้ายไปที่การหาสัญญาณที่มาและแก้ไขปัญหาที่นั่นหรือเพียงแค่ล้างประวัติเมื่อคุณรู้ว่าสัญญาณสุดท้ายคืออะไร (สมมติว่าดิสก์ยังคงออนไลน์อยู่ในตอนนั้น ):

trap "echo got 1  >/tmp/sig1;  exit" SIGHUP
trap "echo got 2  >/tmp/sig2;  exit" SIGINT
trap "echo got 15 >/tmp/sig15; exit" SIGTERM
 .. and so on...

ภาพหน้าจอที่รวมแสดงสิ่งที่ฉันกำลังพูดถึงในวรรคสองและสาม ลำดับที่มีฉันเปลือกจากซ้ายฆ่าเปลือกซ้ายจากขวาและแมวประวัติศาสตร์

ผู้ชายทุบตี

ในการเริ่มต้น (... ) ไฟล์ที่ตั้งชื่อโดยค่าของ HISTFILE จะถูกปัดเศษหากจำเป็นเพื่อให้มีจำนวนบรรทัดไม่เกินจำนวนที่ระบุโดยค่าของ HISTFILESIZE (+ ค่าเริ่มต้น 500)

หากมีการเปิดใช้งานตัวเลือกเชลล์ histappend (+ เริ่มต้นที่นี่) บรรทัดจะผนวกเข้ากับไฟล์ประวัติมิฉะนั้นไฟล์ประวัติจะถูกเขียนทับ

การอ้างอิงออนไลน์

3.7.6 สัญญาณ

เมื่อ Bash เป็นแบบอินเทอร์แอกทีฟหากไม่มีกับดักใด ๆ มันจะข้าม SIGTERM (ดังนั้น 'kill 0' จะไม่ฆ่าเชลล์แบบโต้ตอบ) และ SIGINT จะถูกจับและจัดการ (เพื่อให้การรอในตัวถูกขัดจังหวะ) เมื่อ Bash ได้รับ SIGINT มันจะแตกออกจากลูปที่ดำเนินการใด ๆ ในทุกกรณี Bash จะไม่สนใจ SIGQUIT หากการควบคุมงานมีผลบังคับใช้ (ดูที่การควบคุมงาน) Bash จะไม่สนใจ SIGTTIN, SIGTTOU และ SIGTSTP

คำสั่งที่ไม่ใช่บิลด์เริ่มต้นโดย Bash มีตัวจัดการสัญญาณตั้งค่าเป็นค่าที่สืบทอดโดยเชลล์จากพาเรนต์ เมื่อการควบคุมงานไม่มีผลบังคับใช้คำสั่งแบบอะซิงโครนัสจะไม่สนใจ SIGINT และ SIGQUIT นอกเหนือจากตัวจัดการที่สืบทอดเหล่านี้ คำสั่งที่เรียกใช้เป็นผลมาจากการทดแทนคำสั่งละเว้นสัญญาณควบคุมงานที่สร้างด้วยคีย์บอร์ด SIGTTIN, SIGTTOU และ SIGTSTP

เชลล์ออกโดยค่าเริ่มต้นเมื่อได้รับ SIGHUP ก่อนออกจากเชลล์แบบโต้ตอบจะส่ง SIGHUP ไปยังงานทั้งหมดไม่ว่าจะรันหรือหยุด งานที่หยุดจะถูกส่ง SIGCONT เพื่อให้แน่ใจว่าพวกเขาได้รับ SIGHUP เพื่อป้องกันไม่ให้เชลล์ส่งสัญญาณ SIGHUP ไปยังงานเฉพาะควรลบมันออกจากตารางงานด้วย built-in ที่สร้างขึ้น (ดูที่ตัวควบคุมตำแหน่งงาน) หรือทำเครื่องหมายว่าไม่รับ SIGHUP โดยใช้ disown -h

หากตั้งค่าตัวเลือก huponexit shell ด้วย shopt (ดูที่ Shopt Builtin) Bash จะส่ง SIGHUP ไปยังงานทั้งหมดเมื่อเชลล์ล็อกอินแบบโต้ตอบออกจาก

หาก Bash กำลังรอให้คำสั่งดำเนินการจนเสร็จสิ้นและรับสัญญาณซึ่งตั้งค่ากับดักไว้กับดักจะไม่ถูกดำเนินการจนกว่าคำสั่งจะเสร็จสิ้น เมื่อ Bash กำลังรอคำสั่งแบบอะซิงโครนัสผ่านการรอในตัวการรับสัญญาณที่มีการตั้งค่ากับดักจะทำให้การรอการสร้างกลับมาทันทีโดยมีสถานะการออกมากกว่า 128 ทันทีหลังจากที่มีการดำเนินการกับดัก

ภาพหน้าจอสาธิต

สัญญาณ


ฉันไม่ได้สิ่งที่คุณกำลังทำในภาพหน้าจอนั้น คืออะไร/tmp/psoที่คุณกำลังฆ่า? ฉันเห็นจุดของคุณเกี่ยวกับสัญญาณการฆ่าที่แตกต่างกัน (แม้ว่าคุณจะพูดว่าฉันคิดว่านั่นคือสิ่งที่history -aจะจัดการกับ) ฉันจะทดสอบมันชั่วครู่หนึ่งแล้วรายงานกลับ
terdon

$ cat tmp / ps * \ n ps -o pid = | head -n1> ~ / tmp /
pso

0

ตรวจสอบ / etc / profile และ /etc/profile.d/*

อาจมีบางสิ่งบางอย่างยุ่งกับการตั้งค่าประวัติที่นั่น


ขอบคุณ แต่ผลตอบแทนอะไรเลยและผมได้ตรวจสอบแล้วgrep -r HIST /etc/profile.d/ /etc/profile
terdon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.