Почему некоторый сервер требует, чтобы '. /' запустил скрипты, но другие не делают?

Я задаюсь вопросом, почему некоторые серверы Ubuntu отличаются.

У меня есть два сервера Ubuntu 12.04, которые запускают веб-приложение. Сегодня я пытался выполнить sh файл от его папки. Сервер 1 может выполнить оболочку без./, но сервер 2 требует его. У обоих есть 777 разрешений.

3
задан 23 September 2014 в 10:08

1 ответ

Обычно сценарии/программы в текущей папке не выполняются на linux/unix.

Сценарии/программы только выполняются, когда сценарий/программа может быть найден в $PATH переменная.

Поэтому, когда путь не включен в $PATH переменная, необходимо дать путь к сценарию/программе для выполнения его. Для выполнения сценария/программы в текущей папке, необходимо предварительно ожидать его с ./, который обозначает currect папку.

проверьте, что $PATH переменная на обоих серверах является тем же.

На основе Вашего комментария о $PATH переменная я подозреваю, что один из сценариев находится в папке, которая найдена $PATH переменная, тогда как другой находится в другой папке.

Внимание

Это - плохая идея включать ./ в Ваш $PATH. Таким образом, пользователь может создать злонамеренную команду (такой как ls) и вести Вас в папку, где он сохраняет ее. Тогда Вы выполните локальную версию вместо системной команды (если текущая папка будет помещена в $PATH прежде /bin).

9
ответ дан 17 November 2019 в 19:19

Другие вопросы по тегам:

Похожие вопросы: