Ошибки Bash

Содержание
stderr
!#/bin/bash: not found
VAR: command not found
ls: command not found
Похожие статьи

stderr

Ошибки выводятся в терминал не так как обычные сообщения.

Обычные сообщения это stdout порядковый номер 1

Ошибки это stderr порядковый номер 2

Рассмотрим пример сообщения об ошибке.

Для этого выполним листинг несуществующей директории

ls /etcw

ls: cannot access '/etcw': No such file or directory

Попытка перенаправить ошибку в файл с помощью > ни к чем не приведет

ls /etcw > err

zsh: file exists: err

Причина в том, что > это эквивалент 1> а нам нужно 2>

ls /etcw 1> err
cat err

ls: cannot access '/etcw': No such file or directory

Часто сообщения об ошибках идут вперемешку с обычными.

Например, нужно выполнить поиск в директории где часть поддиректорий недоступны по причине нехватки прав.

find /etc -type l

/etc/mtab find: ‘/etc/grub.d’: Permission denied /etc/pki/ca-trust/source/ca-bundle.legacy.crt /etc/pki/java/cacerts /etc/pki/tls/cert.pem /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.trust.crt find: ‘/etc/pki/CA/private’: Permission denied find: ‘/etc/pki/Pegasus’: Permission denied find: ‘/etc/pki/rsyslog’: Permission denied …

Чтобы не отвлекаться на ошибки их можно перенаправить в /dev/null

find /etc -type l 2> /dev/null

/etc/mtab /etc/pki/ca-trust/source/ca-bundle.legacy.crt /etc/pki/java/cacerts /etc/pki/tls/cert.pem /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.trust.crt /etc/systemd/system/multi-user.target.wants/remote-fs.target /etc/systemd/system/multi-user.target.wants/crond.service /etc/systemd/system/multi-user.target.wants/rhel-configure.service /etc/systemd/system/multi-user.target.wants/libstoragemgmt.service …

Если нужно перенаправить и ошибки и стандартный вывод выполните:

find /etc -type l &> everything.log

1: !#/bin/bash: not found

Ошибка

1: !#/bin/bash: not found

Возникает если перепутать местами ! и # в первой строке скрипта

Правильно писать

#!/bin/bash

VAR: command not found

Ошибка

VAR: command not found

Возникает если перепутать при присвоении значения переменной поставить пробел у знака равенства

Правильно писать

VAR='https://eth1.ru'

Неправильно писать

VAR = 'https://eth1.ru'

Вокруг = не должно быть пробелов.

ls: command not found

Если у вас возникает ошибка

ls: command not found
rm: command not found

Или какая-то ещё базовая команда - скорее всего что-то не так с системной переменной PATH возможно вы в какой-то момент изменили PATH вручную, или делаете это в своём скрипте

PATH="/var/lib"

Если ошибка в скрипте - найдите где вы используете переменную PATH и если вы это делаете осознанно исправьте ошибку. Если вы случайно выбрали такое название переменной - измените его на другое.

Автор статьи: Андрей Олегович
Похожие статьи
Bash
Основы Bash
Скрипты
awk
grep
sed
Ошибки Bash
Zsh
Unix

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: