Perintah dasar tidak berfungsi yaitu: -bash: ls: Tidak ada file atau direktori tersebut

8

Saya baru di Unix dan dalam proses menginstal program untuk disertasi saya, saya harus bermain dengan PATH untuk perintah dasar Unix seperti ls. Setiap kali saya mengetik lsdan nama direktori yang ingin saya daftarkan file-file itu, muncul sebagai:

-bash: ls: No such file or directory

Apa yang bisa saya lakukan untuk memperbaikinya? Setiap bantuan sangat dihargai!

Mariaa
sumber
Alasan mengapa ls tidak berfungsi, tetapi apakah didokumentasikan dalam jawaban saya
Michael Durrant

Jawaban:

23

Setel ulang jalur Anda sekarang (yaitu sebelum segala jenis logout) dengan:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Itu tidak mendapatkan PATH lengkap Anda dikembalikan tetapi utilitas dasar akan tersedia lagi.

Berikut ini contoh hal yang terjadi:

Anda memiliki variabel PATH (disebut $ PATH saat membaca darinya)

Sesuatu seperti:

$ echo $PATH
/home/durrantm/.rvm/gems/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/durrantm/.rvm/rubies/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/bin:/h
ome/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:
/home/durrantm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/durrantm/.rvm/bin:/home/durrantm/.rvm/bin:/home/durrantm
/.rvm/bin

Anda mencoba menambahkannya, tetapi Anda tidak sengaja menggunakannya

PATH=PATH:other_dir

dari pada

PATH=$PATH:other_dir

dan hasilnya adalah jalanmu menjadi

PATH:other_dir

dan kemudian semua utilitas seperti ls dan sed tidak berfungsi

Anda dapat memperbaiki set minimal dengan melakukan

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

yang sangat berguna jika file titik login mengacaukan PATH
Anda. Periksa file .bashrc dan / atau .bash_profile Anda untuk mengetahui perubahan PATH.

Seperti kata Greg, Anda juga bisa keluar (atau opsi yang lebih aman, buka jendela baru jika membuka jendela baru rusak!) Dan kemudian gema $ PATH dari jendela baru.

Hal yang sama terjadi ketika Anda melakukannya path=tanpa nilai. Ini 'menghapus' jalur Anda saat ini dan menyebabkan masalah ini. Teks yang kuat

Adapun alasannya , ketika Anda memiliki masalah ini, cd berfungsi dan ls tidak berfungsi:

  • cd adalah perintah "bawaan" yang tidak memerlukan PATH Anda untuk menemukan program
  • ls adalah program dan perlu menggunakan PATH untuk menemukan di mana itu.

Anda dapat melihat ini dengan:

$ builtin ls
-bash: builtin: ls: not a shell builtin
14:47:29 mdurrant C02MH2DQFD58 /Users/mdurrant
$ builtin cd
14:47:31 mdurrant C02MH2DQFD58 /Users/mdurrant
$

Tidak ada kesalahan berarti perintah itu adalah builtin

Sebelum 'melanjutkan' (atau keluar) ...

Pastikan untuk menguji setiap perubahan ( terutama yang ke .bashrc, .profile, dll yang melakukan perintah pengaturan PATH) dengan membuka jendela baru atau melakukan source ~ / .bash_profile untuk menjalankannya. Ini juga merupakan praktik yang baik untuk menjaga jendela dan editor (ketika Anda mengubah file .bash_profile) terbuka jika perubahan Anda tidak berfungsi dan mencegah Anda membuka jendela baru untuk mengedit file. Meskipun Anda masih dapat menggunakan TextEdit atau editor sederhana lainnya untuk mengubah file (menghindari baris perintah dan vi misalnya). Berhati-hatilah untuk TIDAK me-reboot jika / ketika shell Anda rusak atau Anda bahkan mungkin tidak bisa login. dan itu benar-benar buruk (tanpa akun lain sudari Anda disemprot). Telah terjadi pada saya!

Perbaikan 'akun ekstra' saya juga merupakan penyelamat hidup dan sangat dianjurkan untuk semua (lakukan sekarang!)

Michael Durrant
sumber
Hei! Terima kasih banyak! Saya baru saja mereset jalurnya, tetapi ketika saya membuka jendela terminal baru hal yang sama terjadi. Saya kemudian melakukan lebih banyak ~ / .bash_profile untuk memeriksa perubahan dan itu menunjukkan ini: export PATH =
Mariaa
Apakah itu normal?
Mariaa
Juga, ketika saya menggemakan $ PATH saya tidak mendapatkan hasil .. tidak yakin apakah itu normal atau tidak
Mariaa
@Mariaa bagaimana Anda mengatur ulang path, beri tahu file atau perintah.
jgr208
1
Pastikan untuk menguji setiap perubahan dengan membuka jendela baru atau melakukan source ~/.bash_profileuntuk menjalankannya. Ini juga merupakan praktik yang baik untuk menjaga jendela dan editor (di mana Anda mengubah file .bash_profile) terbuka jika Anda berubah tidak berfungsi dan mencegah Anda membuka jendela baru untuk mengedit file. Meskipun Anda masih dapat menggunakan TextEdit atau editor sederhana lainnya untuk mengubah file.
Michael Durrant
8

Perubahan yang Anda buat PATHkemungkinan bersifat sementara. Tutup cangkang tempat Anda berada exitdan buka kembali.

Jika Anda telah mengedit file yang menetapkan PATHshell yang baru dibuka, tentukan path lengkap ke perintah untuk memperbaiki apa pun yang telah Anda ubah (mis. /usr/bin/vim).

Greg Hewgill
sumber
Halo! Terima kasih (: Saya mencoba melakukan ini tetapi tidak berhasil. Saya kira saya benar-benar melakukan sesuatu yang aneh. Saya ingat menggunakan vim untuk melakukan sesuatu dengan PATH dan kemudian semuanya menjadi kacau. Ugh, berharap saya tahu lebih banyak bahasa komputer untuk menyelesaikan masalah ini!
Mariaa
Apakah /usr/binada bindirektori di jalur Anda? @Mariaa
jgr208
jgr208: ini adalah Path saya: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
Mariaa
@Mariaa Anda tidak menghapus bin atau apa pun dan Anda telah membaca akses ke file yang benar?
jgr208
Namun, saya hanya dapat melihat ini atau menggunakan perintah apa pun ketika saya memasukkan PATH = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin ini di terminal baru jendela .. selain itu saya tidak dapat menggunakan perintah apa pun. Itu tidak mengenali mereka: S
Mariaa