ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как и когда использовать команду Dot в Bash?

Как и когда использовать команду Dot в Bash?

Во-первых, команду Dot (.) не следует путать с точкой перед названием файла или обозначением относительного пути. Например, папка ~/.ssh является скрытой папкой, использующей обозначение файла dot, которое вам нужно будет использовать ls -a для просмотра этой папки. И ./my-script.sh – это относительный путь к скрипту с именем “my-script.sh” в текущей папке. Использование команды Dot было бы таким: . myscript.sh.

Команда Dot (.), она же полная остановка или точка, – это команда, используемая для оценки команд в текущем контексте выполнения. В Bash source команда является синонимом команды dot (.), и вы также можете передавать параметры команде, будьте осторожны, это отклоняется от спецификации POSIX.

.: . filename [arguments]
    Execute commands from a file in the current shell.
    
    Read and execute commands from FILENAME in the current shell.  The
    entries in $PATH are used to find the directory containing FILENAME.
    If any ARGUMENTS are supplied, they become the positional parameters
    when FILENAME is executed.
    
    Exit Status:
    Returns the status of the last command executed in FILENAME; fails if
    FILENAME cannot be read.

 

👉 Если вы не укажете точный путь к имени файла, Bash будет использовать $PATH в поиске файла для оценки.

 

Как использовать команду Dot в Bash?

Когда вы запускаете исполняемый скрипт как ./my-script.sh, команды выполняются в новой подоболочке, в то время как при запуске как . my-script.sh будет использоваться текущий контекст оболочки. Как правило, вашим текущим контекстом является окно вашего терминала. Это означает, что команда dot применит изменения к вашей текущей командной строке. Давайте рассмотрим простой пример ниже.

#!/usr/bin/env bash
export A="hello world"
echo $A

 

При запуске от имени исполняемого файла с помощью ./my-script.sh, переменная A не экспортируется в вашу текущую оболочку и просто возвращает пустой результат.

$ ./test.sh 
hello world
$ echo $A

 

При запуске того же скрипта с командой dot с помощью . my-script.sh, ваш текущий контекст оболочки будет изменен.

$ . test.sh 
hello world
$ echo $A
hello world

Когда использовать команду Dot в Bash?

Наиболее очевидный вариант использования команды dot – это когда вы хотите изменить свой текущий контекст, установив новые переменные или изменив некоторые существующие. У вас также может быть скрипт, который рассчитывает изменить ваш текущий каталог с помощью cd. Это также может быть удобно при попытке запустить скрипт, у которого нет разрешения execute (x).

Exit mobile version