запущение скрипта с“.” и с “источником”

Одна заключительная причина, менее важная, чем данные, является этим, может позволить ПК оставаться загрузочным, если часть диска повреждается. Чем больше разделов Вы имеете, тем легче это будет только к не, монтируют раздел с отказом.

Это может иногда быть полезно, но обычно так или иначе существует лучший путь.

Править: Другая точка: принятие Linux, с помощью LVM может быть хорошим способом избежать любых потенциальных проблем, это помогает изменить размер "разделов" и добавить новое пространство беспрепятственно.

26
25.07.2012, 04:21
2 ответа
  1. Они эквивалентны в, избивают это, они делают точно то же самое. С другой стороны, source 5 символов дольше и не являются портативными к оболочкам только для POSIX или Bourne тогда как . (точка), таким образом, я никогда не потрудился использовать source.

  2. Это корректно - определение источника файла выполняет команды в текущей оболочке, и это будет влиять на Вашу текущую среду оболочки. Можно все еще передать аргументы полученному файлу, и удар на самом деле заглянет $PATH для имени файла точно так же, как нормальная команда, если это не содержит наклонных черт.


Не связанный с исходным вопросом . по сравнению с source, но в Вашем примере,

. ./myScript.sh 

не идентично

source myScript.sh

потому что, в то время как . и source функционально идентичны, myScript.sh и ./myScript.sh не то же. С тех пор ./myScript.sh содержит наклонную черту, она интерпретируется как путь, и оболочка просто использует ./myScript.sh. Однако myScript.sh не имеет наклонной черты, таким образом, оболочка делает a $PATH ищите его сначала. Это - указанное стандартное поведение POSIX для .. Большая часть значения по умолчанию оболочек к этому, хотя они могут добавить расширения (такие как поиск в текущем рабочем каталоге после поиска пути) или опции изменить поведение ./source.

21
27.01.2020, 19:40
  • 1
    поведение, когда обеспеченный путь файла не содержит a / зависимо от оболочки и для bash и zsh зависит от того, включен ли режим POSIX или нет. Также обратите внимание на это во многих ksh реализациях, . ведет себя по-другому по сравнению с source. –  Stéphane Chazelas 14.12.2012, 22:12
  • 2
    @StephaneChazelas Да, Вы правы. Я добавил примечание, чтобы разъяснить, что это вышеупомянутое описание имеет стандарт POSIX. –  jw013 14.12.2012, 22:21

Да, они эквивалентны. Нет никакого функционального различия; . просто встроенный синоним для source.

(Редактирование: По-видимому, это только верно для bash и zsh. Некоторые более легкие оболочки не имеют source, только . указан POSIX так ksh, dash, ash, и т.д. может не иметь source. См. ответ jw013 для получения информации),

8
27.01.2020, 19:40
  • 1
    Спасибо!, Но $ alias . выводы bash: alias: .: not found . –  StackExchange for All 01.08.2011, 19:57
  • 2
    Это, они - и builtins и псевдоним, встроено также. Это документируется, но я предполагаю, что 'синоним' является правильным словом в этом случае, не 'искажают'. –  Caleb 01.08.2011, 20:00

Теги

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