У меня есть скрипт, скажем «script1.sh», который вызывает source на другом скрипте. Я хотел бы иметь script1.sh в папке ~/bin чтобы я мог выполнить его из любого места, не вводя полный путь.

Но, конечно, его выполнение не приведет к тому, что source будет работать так, как нужно.

Есть ли способ обойти это?

2 ответа2

2

Глядя на ваш комментарий к другому сценарию, я предполагаю, что вы хотите установить env vars в script2.sh и оставить их действительными после завершения работы script1.sh.

Я думаю, что лучший ответ на этот вопрос stackoverflow даст вам то, что вы ищете:

https://stackoverflow.com/questions/16618071/can-i-export-a-variable-to-the-environment-from-a-bash-script-without-sourcing-i#16619261

0

Глядя на мои собственные сценарии, две вариации, основанные на $0 являются полностью разрешенным именем вызываемого сценария:

  1. Общий случай: получить каталог текущего скрипта и использовать его для поиска исходного скрипта:

    . $(dirname $0)/sourcedscript
    
  2. При соответствующих соглашениях об именах (скрипт foobar можно настроить, отредактировав скрипт foobar-setup :

    . $0-setup
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .