เปลี่ยน PATH ตอนนี้ฉันได้รับ“ ไม่พบคำสั่ง” สำหรับทุกสิ่ง


26

เซิร์ฟเวอร์ Amazon Linux ที่เชื่อมต่อกับ SSH:

ฉันพยายามเปลี่ยน PATH สำหรับผู้ใช้ apache โดยทำการเปลี่ยนแปลงบางอย่างใน / etc / environment ( PATH=$PATH:/opt/openoffice4/program) และ / etc / sysconfig / httpd ( export PATH = ${PATH:$PATH:}/opt/openoffice4/program)

จากนั้นฉันรีบูท

ตอนนี้ฉันไม่สามารถทำอะไรได้แม้แต่ls -lนำไปสู่-bash: ls: command not found

ฉันสามารถทำอะไรได้บ้างเพื่อควบคุมอีกครั้ง?


4
คุณสามารถรันคำสั่งได้โดยตรงหรือไม่ ยกตัวอย่างเช่น/bin/ls?
DavidPostill

ใช่ฉันสามารถเรียกใช้ / bin / ls
Ferenjito

13
จากนั้นคุณควรจะสามารถเรียกใช้/bin/viและแก้ไขไฟล์ที่คุณทำลายเส้นทางได้
DavidPostill

คำตอบ:


49

ฉันสามารถทำอะไรได้บ้างเพื่อควบคุมอีกครั้ง?

เรียกใช้/bin/viและยกเลิกการเปลี่ยนแปลงที่คุณทำกับและ/etc/environment/etc/sysconfig/httpd


32

คุณสามารถตั้งค่าของคุณPATHโดยไม่ต้องแก้ไข เพียงพิมพ์สิ่งนี้ลงในเปลือก:

export PATH=/usr/local/bin:/usr/bin:/bin:$HOME/bin

1
และลบช่องว่าง! PATH=something, NOTPATH = something
waltinator

4
ที่ควรจะยกมามิฉะนั้น$HOMEจะต้องมีการโค้งและแยกคำ IOW มันจะแตกถ้า$HOMEมีช่องว่างในนั้น (น่าเชื่อถือ) หรืออักขระกลม (มีโอกาสน้อยกว่า)
เควิน

@ เควินฉันลองแล้วช่องว่างและ globs เพิ่งถูกคัดลอก (การเขียนexport PATH=/path to home/binใช้งานไม่ได้แน่นอน)
Neil

2
@Kevin นั่นเป็นวิธีที่มันทำงานในการปฏิบัติตามอย่างเคร่งครัด แต่อย่างน้อยทุบตีให้exportกฎไวยากรณ์ที่กำหนดเองซึ่งไม่มีปัญหานั้น (กำหนดกฎไวยากรณ์ที่ถูกต้องแล้วสำหรับเหตุผลอื่น ๆ เช่นการอนุญาตให้export array=(1 2 3).)
HVD

-1

บางทีนี่อาจช่วย:

export PATH=/usr/local/bin:/usr/bin:/bin:$HOME/bin

คำสั่ง 'ส่งออก' ไม่ได้ใช้จาก / usr / bin ดังนั้นจึงเป็นเหตุผลว่าทำไมจึงยังใช้งานได้!


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