Как выполнить скрипт в текущей оболочке в Linux?

Есть ли способ отметить скрипт, который будет выполняться в текущей оболочке из whitin It?
Я знаю, что могу использовать:

```
. ./path/myscript.sh

```

но мне нужен способ включить «точечный» путь внутри скрипта.

Редактировать:
Вот так. У меня есть сценарий «myscript.sh», расположенный в каталоге A:

```
rm -r A
mkdir A
touch A/test.file
cd A

```

Когда сценарий выполняется обычным способом:

```
sh myscript.sh

```

При выходе из сценария я не могу перечислить каталог.
Когда скрипт запущен в текущей оболочке:

```
. ./myscript.sh

```

Нет проблем. Мне нужен способ включить этот «точечный» путь внутри моего скрипта, чтобы его можно было вызывать без него.

1. put `#!/bin/sh` as the first line of the script
2. Add execute permission i.e. `chmod +x /path/to/script.sh`

Затем вы можете запустить скрипт

i.e. `/path/to/script.sh`

or if you have `/path/to` in the `PATH` environment variable you can simply execute `script.sh`



Существует два способа выполнения скрипта в оболочке. В зависимости от ваших потребностей вам нужно будет выполнить одно из следующих действий (не делайте оба!).

1. Запустите скрипт как программу, где он имеет свой собственный процесс.
2. Отправьте сценарий как кучу текста, где текст обрабатывается текущей оболочкой.

Чтобы запустить скрипт как программу:

* Добавьте строку  `#!/bin/bash`  в качестве первой строки скрипта

Это будет прочитано загрузчиком, который имеет специальную логику, которая связывает первые два символа  `#!`  как «запуск следующей программы и передача содержимого в нее». Обратите внимание, что это правильно работает только для программ, написанных для получения содержимого

Чтобы запустить сценарий в текущую оболочку:

* type the command `. script.sh` or `source script.sh`

Примечание: `.`  в bash эквивалентно  `source`  в bash.

Это действует так, как будто вы ввели содержимое «script.sh». Например, если вы установите переменную в «script.sh», тогда эта переменная будет установлена в текущей оболочке. Вам нужно будет отключить эту переменную, чтобы очистить ее от текущей оболочки.

Это сильно отличается от примера  `#!/Bin/bash` , потому что установка переменной в новом подпроцессе  `bash`  не повлияет на оболочку, с которой вы начали подпроцесс.



Вы можете сделать это, если вместо скрипта вы создаете функцию оболочки. Функции выполняются в одной и той же оболочке, а не в подоболочке. Если вы определяете функции в вашем .profile, они будут доступны для оболочки входа.

I found some more details and explanations here: <http://steve-parker.org/sh/functions.shtml>



Попробуй это:
путь источника/в/shell/script.sh

Он выполнит скрипт оболочки в текущей оболочке.