เริ่มเป็นกลุ่มในฐานะผู้ใช้ของฉันด้วยสิทธิ์พิเศษ


10

ฉันมีไฟล์เสียงเรียกเข้าที่กำหนดเอง~/.vimและการตั้งค่าของ~/.vimrcฉัน อย่างไรก็ตามบางครั้งฉันต้องแก้ไขไฟล์บางไฟล์ใน/etcนั้น
ถ้าฉันเริ่มเป็นกลุ่มแบบนี้:

$ sudo vim /etc/rc.conf

ฉันทำ config ของฉันหายไปเพราะ Vim ใช้ค่าเริ่มต้น ดังนั้น: ฉันจะเรียกใช้ Vim ด้วยสิทธิ์ root เพื่อแก้ไขไฟล์โดยไม่สูญเสียการตั้งค่าของผู้ใช้ (ซึ่งอยู่ในโฮมไดเร็กตอรี่ของฉัน) ได้อย่างไร?
ฉันเหนื่อย:

$ su username -c "vim /usr/lib/python2.7/setuptools/dist.py"

Permission deniedแต่ทุบตีให้ฉัน อย่างไรก็ตามคำสั่งดังกล่าวใช้งานได้สำหรับตัวอย่าง: /etc/acpi/handler.sh. ทำไมถึงเป็นอย่างนั้น?

หมายเหตุ: ชื่อผู้ใช้ไม่ได้เป็นรูท

คำตอบ:


15

แทนการsudo vim /etc/rc.confใช้หรือsudoedit /etc/rc.conf sudo -e /etc/rc.confคุณอาจต้องตั้งค่าตัวแปรสภาพแวดล้อม EDITOR เป็น vim สิ่งนี้จะเรียกใช้กลุ่มตัวเองเป็นผู้ใช้ปกติโดยใช้การกำหนดค่าปกติของคุณบนสำเนาของไฟล์ซึ่งมันจะคัดลอกกลับเมื่อคุณออก


ทางออกที่ดี! ฉันจะตรวจสอบเรื่องนี้เช่นกัน
rubik

ฉันลองsudoedit /etc/rc.confแล้วsudo -e /etc/rc.confมันจะเปิดเป็นกลุ่ม แต่ ~ / .vimrc ของฉันไม่โหลด ฉันทำอะไรผิด
apparat

@apparat ลองexport EDITOR=vimก่อน - มันอาจจะพยายามที่จะทำงานviซึ่งฉันไม่รู้ว่ามันโหลด vimrc แม้ว่าจะเป็นเสียงเรียกเข้าก็ตาม
Random832

ฉันคิดว่านี่เป็นคำตอบที่ดีที่สุด ขอบคุณทั้งคู่
บิ

@ Random832 export EDITOR=vimทำงาน ฉันคิดว่า vi ไม่ได้ติดตั้งในระบบของฉันและเป็นเพียง symlink สำหรับกลุ่ม ขอบคุณ
apparat

6

คุณสามารถใช้-uเพื่อบอก vim ที่โหลดไฟล์ rc เช่น

sudo vim -u ~user/.vimrc /etc/rc.conf

หากคุณพิมพ์ทุกครั้งที่คุณต้องทำให้มันน่าเบื่อให้สร้างนามแฝง:

alias sudovim='sudo vim -u ~user/.vimrc'

โปรดทราบว่าvim -uอาจทำให้ปลั๊กอินหรือเรียกว่าไฟล์ rc ล้มเหลวหากพวกเขาโหลดไฟล์อื่น ๆ ที่เกี่ยวข้องกับ $ HOME - $ HOME คือตอนนี้ที่บ้านของรูตไม่ใช่ผู้ใช้ สิ่งนี้สามารถแก้ไขได้ด้วยเช่น symlinks ในบ้านของรูตหรือโดยเส้นทางที่เข้ารหัสยาก


เยี่ยมมากขอบคุณ ฉันแก้ไขแบบนี้: alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc".
rubik

1

sudo vim -S /home/user/.vimrc /etc/rc.conf

นี่เทียบเท่ากับ:

sudo vim /etc/rc.conf + :source /home/user/.vimrc

และสามารถใช้นามแฝงได้เช่นกัน:

alias svim='sudo vim -S /home/user/.vimrc'

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