Почему я получаю ошибку, когда я использую `uname` в моем.bashrc?
В моем.bashrc у меня есть следующий код
if [`uname` == "Linux"]; then
echo "It worked"
else
echo "It didn't work"
fi
Но когда я получаю исходный код.bashrc, я получаю следующие результаты
[Linux: команда не найдена
Не сработало
Странно, [
это не опечатка, это часть ошибки. Если я закомментирую оператор if, ошибка исчезнет, поэтому я почти уверен, что это источник ошибки. Плюс, если я изменю Linux
в linux
, то ошибка также изменится на строчную.
И если я повторяю uname, я получаю Linux.
Для источника моего.bashrc я использовал source .bashrc
а также начали новую сессию Bash, набрав bash
на терминале командной строки.
Я не думал, что так сложно проверить тип ОС, но я не могу понять правильный синтаксис для.bashrc.
Я не вижу, что я делаю неправильно, кто-нибудь может помочь?
2 ответа
Вы забыли пробел после квадратных скобок. Первая строка должна выглядеть так:
if [ `uname` == "Linux" ]; then
В вашей версии без пробелов [
и выход uname
объединяется в один исполняемый файл с именем [Linux
, которого нет в PATH.
Баш в привередливых про расстояние. Вам нужны пробелы в вашем условном
if [ `uname` == "Linux" ]; then
echo "It worked"
else
echo "It didn't work"
fi