Я действительно чувствую себя глупо, но я не нахожу подходящих ключевых слов для поиска, чтобы получить что-то полезное от Google.
Проблема: мы разрабатываем приложения для symfony1 и symfony2 (php). Мы разрабатываем на машинах с Windows, в то время как наш промежуточный и производственный сервер - это Linux. У нас есть несколько задач, которые выполняет шелл-скрипт на Linux. Эти задачи включают в себя: - Перемещение файлов и папок (например, тестовых файлов в промежуточной папке) - Установка разрешений для папки - выполнение различных команд
Прямо сейчас сценарии оболочки выполняются только на серверах Linux, поскольку они не работают на машинах Windows. Мы хотели бы достичь момента, когда мы можем запустить один скрипт и, в зависимости от среды, он будет выполнять правильные задачи.
Какой язык выбрать для этой задачи? Я слышал хорошие отзывы о питоне, но не знаю, подходит ли он на самом деле. Я немного знаю Perl, но не думаю, что это хороший инструмент. Может быть, есть языки, которые созданы для таких задач?
Хороший ответ: перейдите на Linux на своих настольных компьютерах / ноутбуках. Вы должны разрабатывать на той же платформе, с которой обслуживается приложение.
Ответ «взломайте вместе и возможно на полпути»: установите Cygwin на ваших машинах разработчика, и вы сможете запускать сценарии оболочки.
Вы говорите, что проблема в том, что вы разрабатываете в Windows, но развертываете в Linux, и у вас есть сценарии, которые вы хотите запустить на обоих? Я думаю, вы обнаружите, что всегда есть некоторые причуды, если в сценарии нет эквивалента # ifdef, чтобы выяснить, работает ли он в Windows или Linux, поскольку будут различия в структуре каталогов и тому подобное. Есть ли причина, по которой вы не можете разрабатывать в системе Linux или виртуализировать систему Linux в системе Windows, чтобы вы разрабатывали на той же платформе, на которой строите?
Вы можете заставить Python для Windows работать изначально. А если вы используете для чего-то UNIX-ориентированный язык сценариев (например, Bash), вы можете установить cygwin под Windows, чтобы иметь среду POSIX, в которой можно что-то запускать.
Лично я бы виртуализировал систему Linux и избавил себя от некоторых проблем с портированием и головной боли. Если вы запрашиваете сценарии, которые запускаются на сервере под CRON, установите Cygwin и запишите его в Bash.
Есть много кроссплатформенных языков, которые подходят для задач системного администрирования. Perl, Python и Ruby - допустимые варианты.
Но эти языки не смогут автоматически переводить вещи, которые имеют смысл только в Linux, в ближайший эквивалент Windows. Настройка разрешений отличается в Windows и Linux. Вам нужно будет определить ОС и вызвать соответствующие функции для этой системы.
Какой язык выбрать для этой задачи?
Выберите кроссплатформенный язык, с которым вы уже знакомы. Если вы не слишком хорошо с ним знакомы, выберите тот, который выглядит круто.
Поскольку вы разрабатываете приложения PHP, вы всегда можете просто установить PHP CLI везде. Поскольку вы уже используете PHP, вы с ним знакомы. Хотя многие могут возразить, что PHP - отстой, вы, безусловно, можете с ним справиться, и вы уже используете его.