Я всегда запускал скрипты, используя ./
Например ./script.sh
Недавно я узнал, что вы также можете ввести . script.sh [!d8 ]
Есть ли разница?
Второе намного проще для меня, так как у моей клавиатуры нет ключа для /, но мне нужно нажать SHIFT -.
Оба выполняют сценарий, который находится в том же каталоге, в котором вы находитесь, то есть в текущем рабочем каталоге.
Выполнение . script называется поиском скрипта в bash [!d1 ]
С http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html
Когда файл получен из источника (путем ввода имени исходного файла или имени файла в команде line) строки кода в файле выполняются так, как если бы они были напечатаны в командной строке. Это особенно полезно при сложных запросах, чтобы они могли храниться в файлах и вызывались путем поиска файла, в котором они находятся. В примерах вы обнаружите, что я часто включаю #! / Bin / bash в начале файлов, включая функции , Это не обязательно, если вы пытаетесь найти файл, так же, как нет необходимости в chmod + x файле, который будет создан. Я делаю это, потому что он делает Vim (мой редактор выбора, без пламени, пожалуйста, вы используете то, что вам нравится), думаю, что я редактирую скрипт оболочки и включаю подсветку синтаксиса цвета.Следует заметить: сценарий выполняется так, как если бы он был источником сценария , что означает, что он ожидает синтаксис bash. Таким образом, если вы в настоящий момент работаете в bash и хотите выполнить скрипт, написанный в стиле tcsh, bash будет жаловаться. В отличие от этого вы . bashstylescript.sh, которые будут работать.
Вот демонстрация этого. cwhile.sh находится в стиле tcsh, а whileloop.sh находится в стиле bash.
serg@ubuntu [/home/xieerqi]
================================
$ . cwhile.sh
bash: cwhile.sh: line 8: syntax error: unexpected end of file
serg@ubuntu [/home/xieerqi]
================================
$ . whileloop.sh
28206
33672
18406
65344
12022
10751
29707
44303
15081
59236
Что относительно ./script? В этом случае оболочка прочитает строку #! и запустит соответствующую оболочку для выполнения вашего скрипта.
serg@ubuntu [/home/xieerqi]
================================
$ ./cwhile.sh
Welcome 1 times
Welcome 2 times
Welcome 3 times
Welcome 4 times
Welcome 5 times
Как вы можете видеть, оболочка читает мою строку #!/bin/tcsh и позволяет tcsh выполнить скрипт.
Боковое примечание: Выполнение . script.sh в других оболочках может не работает, так как это похоже на bash только. mksh, например, этого не делает, а использует source script.sh путь