1

В чем разница между Linux и Windows для доступа к оболочке?

В некоторых языках программирования (веб-языки из моего опыта), когда вам нужно выполнить какую-то команду - вам нужно указать путь к cmd.exe в Windows, а в Linux вы сразу получаете доступ к оболочке ... В чем и почему разница? Что именно влияет на языки в обеих системах, когда вы запускаете какую-то os.execute() ?

РЕДАКТИРОВАТЬ: Это довольно теоретический вопрос и не связан с практикой программирования. Я действительно понимаю, что это может быть непросто объяснить тему, поэтому ссылка или указание правильного направления, в котором можно покопаться, тоже помогут.

Вот один из примеров холодного слияния (который я должен сказать странный причудливый):

<cfexecute name="C:\Windows\System32\cmd.exe" arguments="echo Hm" />

3 ответа3

3

Ну, я постараюсь быть простым (широкая тема)

Разница между windows и linux очевидна, ядро не то же самое, я не буду идти в направлении истории (проверьте Википедию, если вам интересно;), но linux, как правило, предпочитает скрипт, потому что он позволяет пользователю настраивать установка или ОС, как он хочет, Windows использует .exe, которые изменяют ключ реестра для запуска программы.

Что касается того, почему вам нужно вводить весь путь для выполнения Windows EXE, это довольно просто (я не буду вдаваться в скучное объяснение), окна на самом деле не используют глобальную переменную (простое объяснение: ключ регистрации на самом деле не нужен это для работы exe), в то время как linux, как правило, любит глобальные переменные, на самом деле вы можете легко добавить глобальную переменную в linux, которая указывает на ваш скрипт.

Поэтому, когда вы хотите запустить скрипт Linux, вы набираете cmd (указывающий на глобальную переменную, содержащую путь), и затем волшебство уходит. Для windons вы - глобальная переменная, поэтому вам нужно определить путь к исполняемому файлу. Вы можете создать свою собственную глобальную переменную в Windows и использовать ее как Linux, если хотите, но лично вам не нравится это делать.

Надеюсь, вы немного лучше поняли принцип.

2

Это совершенно разные платформы, и большинство команд, выполняемых через соответствующие оболочки, будут несовместимы, за исключением Cygwin для Windows, который использует те же команды, что и оболочка linux.

Как правило, старайтесь по возможности избегать вызовов, специфичных для ОС.

1

Изнутри питона я могу сказать:

>>> rc = os.system('echo yes')
yes
>>>

Это будет работать так же под Windows, Linux или любым вариантом Unix.

Я думаю, что явление, которое вы наблюдали, специфично для переносимости рассматриваемого языка.

И обратите внимание, что подмножество командных строк, которые будут давать идентичные результаты, очень ограничено. В Windows и Unix очень мало общих команд.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .