Intereting Posts
cp'd файл по другому файлу с тем же именем Ubuntu 16.04.1: Kernel panic – не синхронизация: Попытка убить init! Извлечь ключ сервера SSH с самого сервера найти поле и переместить его до конца строки Два приложения GUI как разные пользователи на одном экране как центрировать вертикально мозаичный водяной знак флажок vim для добавления строки и сохранения Возможно обновление до последнего Bluez с использованием Mint 15 Olivia (Cinnamon)? Отказано в доступе при попытке найти файл Настройка локальной сети на CentOS Скрытие конфиденциальной информации в файлах от пользователя, но не от сценариев оболочки в Linux Приостановка моего ноутбука ломает Ethernet поверх FireWire, есть ли команды, которые могут это исправить? Не удалось запустить X Server без экранов, no xorg.config для редактирования Сортировка писем по времени в mutt Linux Последняя команда weird output? Мусор для IP-адреса

Почему sh отображает ошибку, если bash не работает?

Почему следующий скрипт отображает сообщение «неожиданного оператора» и не работает при запуске с SH, но не с BASH.

!/bin/sh if [ $UID -ne 0 ] then echo "You must be root." exit 1 else echo "Open sesame." exit 0 fi 

Не все оболочки определяют переменную UID . Это только функция bash и zsh. В других оболочках переменная UID не определена, поэтому ваша тестовая команда расширяется до [ -ne 0 ] которая является синтаксической ошибкой.

Портативный способ получения идентификатора пользователя – с помощью утилиты id .

 if [ "$(id -u)" -ne 0 ]; then …