โดยค่าเริ่มต้นและเพื่อความปลอดภัยsudo
จะไม่รักษาสภาพแวดล้อมของผู้ใช้
มีหลายวิธีในการจัดการกับสิ่งนี้; สำหรับกรณีเฉพาะของคุณผมขอแนะนำให้เพิ่มVISUAL=/usr/bin/vim
(และEDITOR=/usr/bin/vim
สำหรับโปรแกรมที่ใช้ผิดหนึ่ง) /etc/environment
เพื่อ
ตัวเลือกที่สองถ้าคุณมีการกำหนดค่า sudo ที่อนุญาต (อาจเป็นเพราะคุณหรือ sudoers ทั้งหมดมีการเข้าถึงรูทจริงอยู่แล้ว) คือการเรียกใช้visudo
และเพิ่มDefaults env_keep="VISUAL EDITOR"
เพื่ออนุญาตให้ sudoers ทั้งหมดระบุตนเอง (เช่นรักษาตัวแปรสภาพแวดล้อมนั้น)
ไฟล์ sudoers ที่มีอยู่ของคุณอาจมี (หรือรวม) คำสั่ง env_keep หนึ่งรายการหรือมากกว่านั้นเช่นนี้ (จากตัวอย่าง Pastebin):
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
บรรทัดแรกของenv_keep
บรรทัดเหล่านั้นจะเขียนทับสิ่งที่คุณแก้ไขด้านบน (การมอบหมาย) บรรทัดอื่น ๆ จะขยายรายการ ( +=
) เพื่อให้ทุกอย่างทำงานอย่างที่คุณคุ้นเคยและหากคุณไม่มีเหตุผลในการเปลี่ยนชุดฉันขอแนะนำให้เพิ่มบรรทัดต่อจากนั้น:
Defaults env_keep += "VISUAL EDITOR"
(มีตัวเลือกอื่นให้ใช้โปรแกรมแก้ไขที่คุณต้องการ แต่มันซับซ้อนไม่จำเป็นหรืออนุญาตมากเกินไปและเป็นอันตรายดังนั้นคุณต้องอ่านman sudoers
คิดออกเองและเข้าใจว่าปัญหาที่เกี่ยวข้องอาจเป็นอย่างไร)
sudo echo $EDITOR
ไม่ทำสิ่งที่คุณคิดว่ามันไม่ได้ที่นี่ (และสิ่งที่จะต้องพยายามที่จะทำให้การทำงานของ crontab ของคุณ)