Должен ли это быть исходный сценарий? Сделайте это функцией. Поэтому вместо
$ . something some args # run it
есть
$ cat define_something.sh
something() {
commands here...
}
$ . define_something.sh # load the function definition
$ something some args # run the function
Или, если вы хотите, чтобы фактические команды были в исходном скрипте, создайте функцию для его исходного кода:
something() {
. something "$@"
}
, а затем просто запустите something foo bar
вместо . something foo bar
.
Конечно, функции скрывают позиционные параметры основного окружения оболочки, поэтому там это не сработает. Возможно, псевдоним от something
до . something
, если необходимо. (Что уже было предложено А.Б. в их ответе .)