Когда сценарий запускается с использованием источника, он запускается в пределах существующей оболочки, любые переменные, созданные или измененные сценарием, останутся доступными после завершения сценария. Напротив, если скрипт запускается как имя файла, тогда для запуска скрипта будет создана отдельная подоболочка (с полностью отдельным набором переменных).
Также необходимо изменить сценарии оболочки
Это не может работать по той же причине, что вы не можете использовать дочернюю оболочку, чтобы изменить окружающую среду для родительской оболочки. Среда дочернего процесса является частной и не может влиять на среду ее родителя.
Единственный способ выполнить то, что вы пытаетесь, может состоять в том, чтобы составить стандартный поток вывода, который содержит список назначений переменных оболочки. Затем стандартный вывод можно использовать как вход для родительского «источника» или «.». команда. Использование «шумной» программы, такой как сделать, чтобы сделать это, будет значительно сложнее.
Вы могли бы сделать что-то вроде 'пса -o«% A»-p«$$»' а чем 'echo $ 0' и синтаксический анализ, но не совсем уверен, почему вы пытаетесь добиться такого же поведения при поиске файла. – BroSlow
Какова цель поиска, когда вы используете совершенно новую оболочку? –
Я экспортирую переменные среды в свой скрипт. Я хочу передать его из csh-терминала, поэтому я запускаю: bash -c 'source test.sh; exec csh ' – Morad