ทุกคำสั่งล้มเหลวด้วย“ ไม่พบคำสั่ง” หลังจากเปลี่ยน. bash_profile


46

ฉันกำลังอัปเดต. bash_profile และโชคไม่ดีที่ฉันทำการอัปเดตบางอย่างและตอนนี้ฉันได้รับ:

env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
-bash: tar: command not found
-bash: grep: command not found
-bash: cat: command not found
-bash: find: command not found
-bash: dirname: command not found
-bash: /preexec.sh.lib: No such file or directory
-bash: preexec_install: command not found
-bash: sed: command not found
-bash: git: command not found

bash_profile ของฉันดึงไฟล์. sh อื่น ๆ (แหล่งที่มา) จริง ๆ แล้วฉันไม่แน่ใจว่าการแก้ไขใดที่ทำให้เกิดสิ่งนี้

ตอนนี้ถ้าฉันลองและไปยังรายการไฟล์ฉันจะได้รับ:

>ls
-bash: ls: command not found
-bash: sed: command not found
-bash: git: command not found

เคล็ดลับใด ๆ เกี่ยวกับวิธีการติดตามแหล่งที่มาของข้อผิดพลาดและวิธีการใช้เทอร์มินัลสำหรับสิ่งพื้นฐานเช่นรายการไฟล์ ฯลฯ ?


จะเกิดอะไรขึ้นถ้าคุณใช้เส้นทางแบบเต็มเช่น: / bin / ls? และคุณมีการเปลี่ยนแปลงอะไรบ้าง
KP MacGregor

2
ใช่วาง .bash_profile ของคุณ
มกราคม

/ bin / LS รายการไฟล์ แต่แล้วฉันเห็นเหล่านี้ 2 บรรทัดด้านล่าง:-bash: sed: command not found -bash: git: command not found
Blankman

ในกรณีที่ปัญหาของคุณเกิดขึ้นกับ/etc/environmentใช้คำสั่งต่อไปนี้ (ใน centos 6):ssh -t root@<server-ip> "/bin/bash -c '/bin/mv /etc/environment /tmp/'"
Edenshaw

คำตอบ:


65

ดูเหมือนว่าในจุดหนึ่งหรืออีกคุณกำลังเขียนทับPATHตัวแปรสภาพแวดล้อมเริ่มต้น ประเภทของข้อผิดพลาดที่คุณมีระบุว่าPATHไม่มีอยู่/binโดยที่คำสั่งข้างต้น (รวมถึงbash) อยู่

ตัวอย่างเช่นถ้าคุณทำ

PATH=/home/user/bin

แทน

PATH="$PATH":/home/user/bin

ฉันไม่ทำเช่นนี้เมื่อถึงจุดหนึ่ง:export PATH=PATH:EC2_HOME/bin
Blankman

2
คุณต้องใช้ '$' ในสตริงเส้นทางที่สอง - export PATH=$PATH:EC2_HOME/bin
Manula Waidyanatha

แปลกที่ 'พื้นที่อธิบาย EC2' ไม่ทำงานถึงแม้ว่ามันจะอยู่ในเส้นทางของฉัน แต่ก็ใช้งานได้: $ EC2_HOME / bin / ec2- อธิบายพื้นที่ที่ฉันทำการโหลดแหล่งข้อมูลด้วย ...
Blankman

2
ดูสิเราไม่รู้ว่าคุณกำลังทำอะไรไฟล์อะไรที่คุณกำลังหาอยู่ในนั้น และใช่ทุกครั้งที่คุณส่งไฟล์คุณเพิ่มสิ่งต่าง ๆ ลงในพา ธ ของคุณ (ซึ่งก็ดีเพราะปกติแล้ว. bash_profile จะอ่านได้เพียงครั้งเดียว) ผ่านมันทีละคนและดูว่าเกิดอะไรขึ้น นอกจากนี้ EC2_HOME ไม่ใช่ตัวแปรใช่หรือไม่ ถ้าใช่คุณควรนำหน้าด้วยตัวอย่าง$นี้:export PATH=$PATH:$EC2_HOME/bin
มกราคม

1
ฉันสูญเสียการนับจำนวนครั้งที่ฉันติดอยู่กับปัญหานั้นและเท่าไหร่คำตอบนี้ช่วยฉันได้มาก
Herrgott

21

วิธีหนึ่งในการเริ่มการดีบักสคริปต์ทุบตีของคุณคือการเริ่ม subshell ด้วยตัวเลือก -x:

$ bash --login -x

นี่จะแสดงให้คุณเห็นทุกคำสั่งและอาร์กิวเมนต์ของมันซึ่งจะถูกดำเนินการเมื่อเริ่มต้นเชลล์นั้น

ระบุตัวเลือก --login เนื่องจาก. bash_profile ถูกอ่านโดยเชลล์ล็อกอิน ข้อมูลเพิ่มเติมเกี่ยวกับการแก้จุดบกพร่องสคริปต์ทุบตีสามารถพบได้ที่นี่: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html

ท้ายที่สุดฉันคิดว่าคำแนะนำของเดือนมกราคมจะเหมาะกับคุณ แต่ลิงก์นั้นคุ้มค่าที่จะอ่านสำหรับปัญหาในอนาคต


ได้สิ่งนี้: -bash: bash: ไม่พบคำสั่ง
Yassine Qoraiche

10

ฉันอาจพบปัญหา มันได้ผลสำหรับฉันและมันอาจใช้ได้กับคุณ ...

ฉันเริ่มต้นด้วยการแก้ไขของฉันไปที่ Windows (LF / CR) บันทึก เนื่องจากฉันใช้ทั้งสองระบบมันดูสมเหตุสมผล เมื่อฉันต้องการที่จะยุ่งกับฉัน.bash_profileฉันตระหนักหลังจากแสดงความคิดเห็นออกไปและพยายามสิ่งต่าง ๆ ที่ไม่มีอะไรทำงาน ฉันเปลี่ยนการบันทึกเป็นรูปแบบ OS X (CR เท่านั้น) และvoilà! ไม่มีคำสั่ง "ไม่พบ" ใน terminal!

มันอาจเป็นเรื่องง่าย!


สิ่งที่ลึกซึ้งมากที่ทำให้ฉันเป็นบ้า ขอบคุณที่เพิ่มคำตอบ!
samuel.molinski

นี่คือสิ่งที่ฉันกำลังประสบ! ขอบคุณ เคล็ดลับด่วนคือการใช้คำสั่งนี้เพื่อแปลงไฟล์ในสภาพแวดล้อมระบบปฏิบัติการยูนิกซ์ของคุณ:$ dos2unix .bash_profile
melwil

คุณแน่ใจหรือไม่ว่าเป็นสิ่งที่คุณทำ เนื่องจาก OS X เป็น Unix จึงใช้การลงท้ายบรรทัดแบบ Unix ด้วยอักขระ linefeed (LF) ไม่ใช่ carriage return (CR) ระบบปฏิบัติการที่ได้รับความนิยมเพียงอย่างเดียวที่ใช้หลังคือ OS 9 และก่อนหน้านี้และแอปพลิเคชัน Linux / Ubuntu จะค่อนข้างสับสน
David Foerster

6

หลังจากที่ฉันไม่สามารถเรียกใช้อีกครั้ง ~ / .bash_profile หรือคำสั่งปกติเช่น whoami, grep, ฯลฯ ฉันคิดวิธีที่จะส่งออกเส้นทางที่ต้องการอีกครั้ง:

export PATH=/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/cpanel/composer/bin:/usr/local/easy/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin

สิ่งนี้ควรทำงานในระบบส่วนใหญ่แม้ว่าบางเส้นทางเหล่านี้จะไม่ปรากฏในแพ็คเกจ Linux ทั้งหมด มันใช้งานได้สำหรับฉัน


4

ฉันคิดว่าฉันอาจพบคำตอบของปัญหาหากไม่ใช่เพื่อคุณแล้วสำหรับคนอื่นที่มีปัญหาคล้ายกัน .bash_profileคำตอบของฉันนี้คือว่าผมไม่ได้มี

ดังนั้นฉันจึงค้นหาทั่วเว็บและฉันพบวิธีแก้ปัญหา ซึ่งเป็นพื้นเปิด terminal, ประเภทและกดtouch ~/.bash_profile Enterที่แก้ไขปัญหาของฉัน หวังว่ามันจะเหมือนกันสำหรับคุณ


8
ฮ่า ๆ ... -bash: touch: ไม่พบคำสั่ง
Kumar KL

2

ฉันมีปัญหาเช่นเดียวกับคุณ ฉันไม่สามารถใช้คำสั่งยอดนิยมจำนวนมาก ( ls,, vi/vim.. ) และไม่สามารถแก้ไขได้/root/.bashrcเมื่อฉันลงชื่อเข้าใช้ด้วยsuในรูท

ในที่สุด ฉันพบวิธีแก้ปัญหาสำหรับปัญหานี้แล้ว เพียงเข้าสู่ระบบรูทด้วยคำสั่ง:

su -m

หลังจากนั้นคุณสามารถใช้

vim /root/.bashrc

เพื่อแก้ไข PATH

โชคดี!


2

ฉันมีปัญหาเดียวกัน. คุณอาจพลาด $ ในขณะที่ส่งออก PATH คุณควรเปิด. bash_profile ใน TextEdit หากคุณไม่พบไฟล์ในไดเรกทอรีให้กด Command + Shift +> เพื่อแสดงไฟล์ที่ซ่อน

จากนั้นทำการแก้ไขเส้นทางและบันทึก

ในไดเรกทอรีบน Terminal ให้พิมพ์: source .bash_profile

สิ่งนี้ควรแก้ไขปัญหา


ขอบคุณมันแก้ปัญหาของฉันในที่สุดฉันก็สามารถแก้ไขไฟล์ bash_profile ของฉัน
Touseef Murtaza

1

ฉันมีปัญหาเดียวกันทั้งหมด:

ถ้าฉันใส่ lxterminal:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash/

ถ้าฉันป้อนคำสั่งเดียวกันทั้งหมดใน tty2 ฉันได้รับ:

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash\r

\ r หมายถึงจุดสิ้นสุดของ DOS ดังนั้นฉันจึงเปิดไฟล์~/.bashrcและเปลี่ยนจุดสิ้นสุดของเส้นใน Krusader เป็นรูปแบบ unix และมันก็ใช้งานได้แล้ว !!! :-)

DOS EOLs สร้างปัญหาอันยิ่งใหญ่ในสคริปต์ทุบตี


1

.bash_profileฉันมีปัญหาเดียวกันเพียงแค่ตอนนี้หลังจากที่ผมเปลี่ยน และฉันต้องการเปลี่ยนกลับ แต่ตอนนี้ฉันทำไม่ได้เพราะฉันทำหายคำสั่งทั้งหมดโดยเฉพาะคำสั่ง nano และคำสั่ง vim ดังนั้นฉันจึงไม่สามารถเปิดคำสั่ง. bash_profile พร้อมคำสั่ง และ.bash_profileมันเป็นไฟล์ที่ซ่อนอยู่ฉันไม่สามารถเปิดด้วย Finder ได้

ดังนั้นฉันต้องหาวิธีเปิดไฟล์. bash_profile หลังจากฉันลองหลายวิธีฉันพบว่าฉันสามารถใช้Atomได้เนื่องจาก Atom สามารถอ่านไฟล์ทั้งหมดในโฟลเดอร์โครงการรวมไฟล์ที่ซ่อนอยู่ ดังนั้นเพียงแค่เปิด Atom และเลือกFile -> Open, เลือก<yourusername>โฟลเดอร์จากนั้นไฟล์ที่ซ่อนทั้งหมดจะแสดงในมุมมองแบบต้นไม้ของ Atom รวมถึง.bash_profile!! หลังจากฉันลบการปรับเปลี่ยนครั้งล่าสุดและเปิด Terminal อีกครั้งคำสั่งทั้งหมดจะกลับมา! :)

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