найдите не работает над путем symlinked?

Даже при том, что GCC является GPLv3, получающиеся двоичные файлы, произведенные GCC никогда, не имели ограничения лицензии. В ясном можно использовать GCC для создания программного обеспечения, которое подпадает под лицензию, которую Вы хотите. Даже библиотека C, которая идет с GCC и это включено в двоичный файл, без лицензий. http://www.gnu.org/licenses/gcc-exception-faq.html

Разделите 2 из GNU GPLv3:

У Вас есть разрешение распространить работу Целевого Кода, сформированного путем объединения Библиотеки времени выполнения с Независимыми Модулями, даже если такое распространение иначе нарушило бы условия GPLv3, при условии, что весь Целевой Код был сгенерирован Имеющими право Процессами компиляции. Можно затем передать такую комбинацию в соответствии с условиями по Вашему выбору, согласовывающийся с лицензированием Независимых Модулей.

“Имеющий право” означает, что компиляция не включает и GCC и GPL-несовместимое программное обеспечение. Это не ограничение: BSD-лицензированное программное обеспечение может использоваться в процессе сборки, включающем GNU GCC.

Как Вы видите, вопреки тому, что было сказано выше, нет никакой РЕАЛЬНОЙ связанной с лицензией причины переехать от GCC, поскольку нет никакой несовместимости с использованием GCC в FreeBSD.

Настоящая причина позади этого изменения является политической и оппортунистической:

  • BSD имеет свое собственное лицензирование, которое философски конкурирует с лицензией Общественности GNU (как *ire_and_curses* объясненный выше),
  • ЛЯЗГ является новым non-GPL компилятором, инициируемым спонсором FreeBSD, который, кажется, технически эквивалентен GPL-лицензированному GCC (как описано выше *ire_and_curses*).

Эти факты создают возможность для FreeBSD, чтобы переехать от GCC и избавиться от него: они на самом деле по закону не вынуждены, поскольку они могли все еще использовать GCC для создания бесплатного или BSD-лицензированного программного обеспечения, но они хотят придерживаться лицензируемого программного обеспечения "всего BSD" философия.

12
24.09.2016, 03:56
1 ответ

Вот ответ. Но тот вопрос указывает для избиения как цель проблемы.

Объяснение - это find находит "$HOME/MySymlinkedPath". Это - символьная ссылка, не каталог, таким образом, рекурсивный спуск останавливается там. Если выражение подобрано "$HOME/MySymlinkedPath" (например, в find "$HOME/MySymlinkedPath" -name 'My*'), затем find распечатал бы это как соответствие.

Как указано там, я нашел, что самый легкий/самый чистый способ иметь дело с ним и исправить все сценарии, вместо:

find "$HOME/MySymlinkedPath" -name "run*.sh"

просто добавьте наклонную черту, так, чтобы find начинает не с символьной ссылки, а с цели символьной ссылки:

find "$HOME/MySymlinkedPath/" -name "run*.sh"

С другой стороны, передайте -H опция к find (обратите внимание, что это должно быть на первом месте, перед путями), чтобы сказать это пересекать символьные ссылки передало свою командную строку. (Это отличается от -L который говорит find пересекать символьные ссылки, с которыми встречаются во время рекурсивного спуска также.)

find -H "$HOME/MySymlinkedPath" -name "run*.sh"

И наконец это работало лучше всего здесь с -L (из-за этих нескольких файловых систем у меня есть symlinked через папки). Но это генерирует загрузки не проблематичные сообщения об ошибках, таким образом, я добавил 2>/dev/null; и также решенный для создания этого псевдонима alias find='find -L':

find -L "$HOME/MySymlinkedPath" -name "run*.sh" 2>/dev/null
18
27.01.2020, 19:55
  • 1
    По моему скромному мнению, это - обычно хорошая практика для использования запаздывающей наклонной черты после каталогов, чтобы указать, что они - на самом деле каталоги.:) Делает вещи более читаемыми, и т.д. –  dannysauer 07.10.2013, 00:54

Теги

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