Я задаюсь вопросом, почему некоторые серверы Ubuntu отличаются.
У меня есть два сервера Ubuntu 12.04, которые запускают веб-приложение. Сегодня я пытался выполнить sh файл от его папки. Сервер 1 может выполнить оболочку без./, но сервер 2 требует его. У обоих есть 777 разрешений.
Обычно сценарии/программы в текущей папке не выполняются на linux/unix.
Сценарии/программы только выполняются, когда сценарий/программа может быть найден в $PATH
переменная.
Поэтому, когда путь не включен в $PATH
переменная, необходимо дать путь к сценарию/программе для выполнения его. Для выполнения сценария/программы в текущей папке, необходимо предварительно ожидать его с ./
, который обозначает currect папку.
проверьте, что $PATH
переменная на обоих серверах является тем же.
На основе Вашего комментария о $PATH
переменная я подозреваю, что один из сценариев находится в папке, которая найдена $PATH
переменная, тогда как другой находится в другой папке.
Внимание
Это - плохая идея включать ./
в Ваш $PATH
. Таким образом, пользователь может создать злонамеренную команду (такой как ls
) и вести Вас в папку, где он сохраняет ее. Тогда Вы выполните локальную версию вместо системной команды (если текущая папка будет помещена в $PATH
прежде /bin
).