Кожна команда не працює з "командою не знайдено" після зміни .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/environmentssh -t root@<server-ip> "/bin/bash -c '/bin/mv /etc/environment /tmp/'"
виникли

Відповіді:


65

Мені здається, що в той чи інший момент ви перезаписуєте PATHзмінну середовища за замовчуванням . Тип помилок, який ви маєте, вказує на те, що PATHне містить /bin, де перераховані вище команди (у тому числі bash).

Наприклад, якщо ви робите

PATH=/home/user/bin

замість

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

Я зробив це в один момент:export PATH=PATH:EC2_HOME/bin
Бланкмен

2
Ви повинні використовувати "$" у другій export PATH=$PATH:EC2_HOME/bin
строці

дивно, як 'ec2-описує регіони' не працює, хоча це на моєму шляху, але це працює: $ EC2_HOME / bin / ec2-description-regions Я також перезавантажував джерело ....
Blankman,

2
Подивіться, ми не знаємо, що ви робите, які ще файли ви шукаєте, що в них є. І так, щоразу, коли ви джерело файлу, ви додаєте речі до свого шляху (це нормально, тому що зазвичай .bash_profile буде прочитаний лише один раз). Пройдіть його по черзі і подивіться, що відбувається. Також, чи не EC2_HOME є змінною? Якщо так, то вам слід передувати це $так:export PATH=$PATH:$EC2_HOME/bin
січня

1
Я втрачаю підрахунок, скільки разів я стикався з цією проблемою і скільки разів ця відповідь мені дуже допомогла
Герргот

21

Один із способів почати налагодження сценарію bash - це запустити нижню частину з опцією -x:

$ bash --login -x

Це покаже вам кожну команду та її аргументи, які виконуються при запуску цієї оболонки.

Параметр --login вказаний, оскільки .bash_profile читається оболонками входу. Додаткову інформацію про налагодження сценаріїв bash можна знайти тут: 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à! Більше "команда не знайдена" в терміналі!

Це може бути просто так просто!


Дуже тонка річ, яка зводила мене з розуму. Дякуємо, що додали цю відповідь!
samuel.molinski

Це я переживав! Дякую. Швидкий $ dos2unix .bash_profile
підказок

Ви впевнені, що це зробили? Оскільки OS X є Unix, він використовує закінчення рядків у стилі Unix з одним символом передачі даних (LF), а не поверненням каретки (CR). Єдиною популярною операційною системою, яка використовувала останню, були ОС 9 та попередні програми, а також додатки Linux / Ubuntu були б дуже заплутані.
Девід Фоерстер

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.

Тож я шукав по всьому Інтернету і знайшов рішення. В основному відкрийте термінал, наберіть touch ~/.bash_profileі натисніть Enter. Це вирішило мої проблеми. Сподіваємось, це зробить те саме


8
LOL ... -bash: touch: команда не знайдена
Kumar KL

2

У мене така ж проблема, як і у вас. Я не можу використовувати багато популярних команди ( ls, vi/vim..) і не можу редагувати , /root/.bashrcколи я увійти з suв корінь.

Нарешті. Я знайшов рішення цієї проблеми. Просто увійдіть в корінь з командою:

su -m

Після цього можна використовувати

vim /root/.bashrc

відредагувати PATH.

Удачі!


2

У мене була така ж проблема. Можливо, ви пропустили $, експортуючи PATH. Ви повинні відкрити .bash_profile у TextEdit. Якщо ви не можете знайти файл у каталозі, натисніть Command + Shift +>, щоб показати приховані файли.

Потім внесіть виправлення в PATH, а потім збережіть.

У каталозі на терміналі введіть: 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-стиль. І це вже працює !!! :-)

DOL EOL створюють корінні проблеми також у сценаріях bash.


1

Я отримав таку ж проблему прямо зараз, коли я змінив .bash_profile. І я хочу це змінити, але тепер не можу, тому що я втратив усі команди, особливо команду nano та команду vim, тому не можу відкрити .bash_profile з командою. І .bash_profileце прихований файл, я не можу відкрити його за допомогою Finder.

Тому мені потрібно знайти спосіб відкрити .bash_profile файл. Перепробувавши багато способів, я виявив, що можу використовувати Atom , оскільки Atom може читати всі файли в папці проекту, включати приховані файли. Тому просто відкрийте Atom і виберіть папку File -> Open, виберіть <yourusername>папку, а потім, всі приховані файли відображаються на дереві Atom дерева, включіть .bash_profile!! Після того як я видалив останню модифікацію і знову відкрив Термінал, усі команди повернулися! :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.