Почему я должен использовать sh для выполнения сценариев от медиа CD/DVD?

Наиболее эффективный способ, не делайте этого! Если Вы делаете, в любом случае, Вам нужно дважды 'большое' пространство на диске, и Вы тратите впустую iOS.

Если Вы застреваете с большим файлом, который Вы хотите считать без 1-й строки, ожидать, пока Вы не должны читать ее для удаления 1-й строки. Если необходимо отправить файл от stdin до программы, используйте хвост, чтобы сделать это:

tail -n +2 | your_program

Когда необходимо считать файл, можно воспользоваться возможностью для удаления 1-й строки, но только если у Вас есть необходимое пространство на диске:

tail -n +2 | tee large_file2 | your_program

Если Вы не можете читать из stdin, используйте FIFO:

mkfifo large_file_wo_1st_line
tail -n +2 large_file > large_file_wo_1st_line&
your_program -i large_file_wo_1st_line

из еще лучше при использовании удара используйте в своих интересах замену процесса:

your_program -i <(tail -n +2 large_file)

Если Вам нужен поиск в файле, я не вижу лучшего решения, чем не застревание с файлом во-первых. Если этот файл был сгенерирован stdout:

large_file_generator | tail -n +2 > large_file

Еще, всегда существует решение для замены FIFO или процесса:

mkfifo large_file_with_1st_file
large_file_generator -o large_file_with_1st_file&
tail -n +2 large_file_with_1st_file > large_file_wo_1st_file

large_file_generator -o >(tail -n 2+ > large_file_wo_1st_file)
6
27.12.2012, 15:04
2 ответа

Файловые системы часто монтируются noexec,nosuid по умолчанию повысить безопасность немного. Следовательно даже при том, что Вы видите, что исполняемый файл обдумал набор файла, ядро откажется выполнять его. Путем вызова его в форме interpreter path/to/script Вы запрашиваете систему работать interpreter, который в свою очередь получает path/to/script как аргумент и синтаксические анализы это таким образом обход файловой системы ввел ограничение (Вы смогли достигать того же эффекта со скомпилированными исполняемыми файлами с: /lib/ld-linux.so.1 path/to/executable).

Следовательно одна опция mount -o exec .... Вы могли бы хотеть поместить опцию в /etc/fstab - обычно путем замены defaults опция с defaults,exec. Однако, если Вы действительно не знаете то, что Вы делаете, я отговорил бы от этого.

Что касается специфических особенностей Bash, я верю bash интерпретирует тех, которые, работая как sh. И Вы определенно свободны вызвать его как bash path/to/script.

9
27.01.2020, 20:24
  • 1
    Добавление исполнительной опции в/etc/fstab работает действительно. Кроме того, Вы получаете много предупреждений о под управлением программном обеспечении непосредственно от внешних медиа при использовании гнома. –  a1an 27.12.2012, 14:57

Это немного поздно к игре, но я нашел этот поиск ответа на мою проблему и думал, что вмешаюсь для других, ищущих. Наш сценарий оболочки был записан к CD из Windows PC и когда-то смонтировался в поле Redhat, появился как rw-rw-r--. Мое решение состояло в том, чтобы поместить файл на сервер CM Redhat, сделать его r-xr-xr-x, и запишите его к CD от поля Redhat. Те полномочия появились то же, когда-то смонтированное на целевом компьютере, таким образом, я мог работать только с /mnt/cdrom/install.sh

1
27.01.2020, 20:24

Теги

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