Setiap perintah gagal dengan "perintah tidak ditemukan" setelah mengubah .bash_profile?


46

Saya memperbarui .bash_profile saya, dan sayangnya saya membuat beberapa pembaruan dan sekarang saya mendapatkan:

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 saya benar-benar menarik di file .sh lainnya (sumber mereka) jadi saya tidak yakin modifikasi yang mungkin menyebabkan ini.

Sekarang jika saya bahkan mencoba dan ke daftar file, saya mendapatkan:

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

Adakah tips tentang cara melacak sumber kesalahan, dan bagaimana cara menggunakan terminal untuk hal-hal dasar seperti daftar file dll?


Apa yang terjadi jika Anda menggunakan path lengkap seperti: / bin / ls? Dan perubahan apa yang Anda lakukan?
— KP MacGregor

2
Ya, tempelkan .bash_profile
— Januari

/ bin / ls mencantumkan file, tapi kemudian saya melihat 2 baris di bawah ini:-bash: sed: command not found -bash: git: command not found
— Blankman

Jika Anda mengalami masalah /etc/environment, gunakan perintah berikut (dalam centos 6):ssh -t root@<server-ip> "/bin/bash -c '/bin/mv /etc/environment /tmp/'"
— Edenshaw

Jawaban:


66

Tampak bagi saya bahwa pada satu titik atau lain Anda menimpa PATHvariabel lingkungan default . Jenis kesalahan yang Anda miliki, menunjukkan bahwa PATHtidak mengandung /bin, di mana perintah di atas (termasuk bash) berada.

Misalnya, jika Anda melakukannya

PATH=/home/user/bin

dari pada

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

Saya melakukan ini pada satu titik:export PATH=PATH:EC2_HOME/bin
— Blankman

2
Anda harus menggunakan '$' dalam string PATH kedua - export PATH=$PATH:EC2_HOME/bin
— Manula Waidyanatha

aneh bagaimana 'ec2-menggambarkan-daerah' tidak berfungsi, meskipun itu di jalan saya, namun ini bekerja: $ EC2_HOME / bin / ec2-menggambarkan-daerah saya melakukan sumber ulang juga ....
— Blankman

2
Lihat, kami tidak tahu apa yang Anda lakukan, file lain apa yang Anda sumber, apa yang ada di dalamnya. Dan ya, setiap kali Anda sumber file, Anda menambahkan hal-hal ke jalur Anda (yang baik-baik saja, karena biasanya .bash_profile akan dibaca hanya sekali). Periksalah satu per satu dan lihat apa yang terjadi. Juga, bukankah EC2_HOME sebuah variabel? Jika ya, maka Anda harus mendahuluinya dengan $seperti ini:export PATH=$PATH:$EC2_HOME/bin
— Januari

1
Saya kehilangan hitungan berapa kali saya terjebak dalam masalah itu dan berapa kali jawaban ini banyak membantu saya
— Herrgott

21

Salah satu cara untuk mulai men-debug skrip bash Anda adalah dengan memulai subshell dengan opsi -x:

$ bash --login -x

Ini akan menunjukkan kepada Anda setiap perintah, dan argumennya, yang dieksekusi ketika memulai shell itu.

Opsi --login ditentukan karena .bash_profile dibaca oleh shell login. Informasi lebih lanjut tentang debugging skrip bash dapat ditemukan di sini: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html .

Pada akhirnya, saya pikir saran Januari akan bekerja untuk Anda, tetapi tautan itu layak dibaca untuk masalah di masa mendatang.


dapatkan ini: -bash: bash: perintah tidak ditemukan
— Yassine Qoraiche

10

Saya mungkin menemukan masalahnya. Itu bekerja untuk saya, dan mungkin berhasil untuk Anda ...

Saya default dengan editor saya untuk menyimpan Windows (LF / CR). Karena saya menggunakan kedua sistem, sepertinya logis. Ketika saya perlu mengacaukan saya .bash_profile, saya menyadari setelah berkomentar dan mencoba hal-hal yang tidak ada yang berhasil. Saya mengubah tabungan saya ke format OS X (hanya CR) dan voilĂ ! Tidak ada lagi "perintah tidak ditemukan" di terminal!

Mungkin semudah itu!


Hal yang sangat halus yang membuatku gila. Terima kasih telah menambahkan jawaban ini!
— samuel.molinski

Inilah yang saya alami! Terima kasih. Tip cepat menggunakan perintah ini untuk mengonversi file di lingkungan unix Anda:$ dos2unix .bash_profile
— melwil

Apakah Anda yakin itu yang Anda lakukan? Karena OS X adalah Unix, ia menggunakan ujung garis gaya Unix dengan karakter linefeed (LF) tunggal, bukan carriage return (CR). Satu-satunya sistem operasi populer yang menggunakan yang terakhir adalah OS 9 dan sebelumnya dan aplikasi Linux / Ubuntu akan sangat bingung karenanya.
— David Foerster

6

Setelah saya tidak bisa menjalankan kembali. ~ / .bash_profile atau perintah biasa seperti whoami, grep, dll. Saya menemukan cara untuk mengekspor kembali jalur yang diperlukan:

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

Ini harus bekerja di sebagian besar sistem, meskipun beberapa jalur ini tidak ada di semua paket Linux. Itu berhasil untuk saya.


4

Saya pikir saya mungkin telah menemukan jawaban untuk masalah jika bukan untuk Anda maka untuk orang lain yang memiliki masalah serupa. Jawaban saya untuk ini adalah saya tidak punya .bash_profile.

Jadi saya mencari di seluruh web dan saya menemukan solusinya. Yang pada dasarnya adalah membuka terminal, ketik touch ~/.bash_profiledan tekan Enter. Itu memperbaiki masalah saya. Semoga itu melakukan hal yang sama untuk Anda


8
LOL ... -bash: touch: command not found
— Kumar KL

2

Saya memiliki masalah yang sama seperti Anda. Saya tidak dapat menggunakan banyak perintah populer ( ls, vi/vim, ..) dan tidak bisa mengedit /root/.bashrcketika saya login dengan suke akar.

Akhirnya. Saya menemukan solusi untuk masalah ini. Cukup login root dengan perintah:

su -m

Setelah itu, Anda bisa menggunakannya

vim /root/.bashrc

untuk mengedit PATH.

Semoga berhasil!


2

Saya memiliki masalah yang sama. Anda mungkin melewatkan $ saat mengekspor PATH. Anda harus membuka .bash_profile di TextEdit. Jika Anda tidak dapat menemukan file di direktori, tekan Command + Shift +> untuk menampilkan file yang tersembunyi.

Kemudian lakukan koreksi ke PATH dan kemudian simpan.

Dalam direktori di Terminal, ketik: source .bash_profile.

Ini harus menyelesaikan masalah.


Terima kasih telah menyelesaikan masalah saya, akhirnya saya dapat mengedit file bash_profile saya.
— Touseef Murtaza

1

Saya memiliki masalah yang persis sama:

Jika saya memasukkan 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/

jika saya memasukkan perintah yang sama persis di tty2 saya mendapat:

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

berarti DOS akhir baris, jadi saya membuka file ~/.bashrcdan mengubah ujung baris di Krusader ke gaya unix. Dan sudah bekerja !!! :-)

DOS EOL membuat masalah spourious juga dalam skrip bash.


1

Saya mendapat masalah yang sama sekarang setelah saya mengubah .bash_profile. Dan saya ingin mengubahnya kembali tetapi sekarang saya tidak bisa, karena saya kehilangan semua perintah, terutama perintah nano dan perintah vim, jadi saya tidak bisa membuka file .bash_profile dengan perintah. Dan .bash_profilefile tersembunyi saya tidak bisa membukanya dengan Finder.

Jadi saya perlu menemukan cara untuk membuka file .bash_profile. Setelah saya mencoba banyak cara saya menemukan bahwa saya dapat menggunakan Atom , karena Atom dapat membaca semua file dalam folder proyek, termasuk file yang tersembunyi. Jadi cukup buka Atom, dan pilih File -> Open, pilih <yourusername>folder, dan kemudian, semua file tersembunyi ditampilkan pada tampilan pohon Atom, termasuk .bash_profile!! Setelah saya menghapus modifikasi terakhir dan membuka kembali Terminal, semua perintah kembali! :)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.