Подтвердить что ты не робот

Исправить все файлы в каталоге из .bash_profile

Мне нужно разрешить нескольким приложениям добавлять системную переменную ($ PYTHONPATH в этом случае). Я думаю о назначении каталога, в котором каждое приложение может добавить модуль (например,.bash_profile_modulename). Пробовал что-то подобное в ~/.bash_profile:

find /home/mike/ -name ".bash_profile_*" | while read FILE; do
source "$FILE"
done;

но он не работает.

4b9b3361

Ответ 1

Не было бы

 for f in ~/.bash_profile_*; do source $f; done

достаточно?

Изменить: дополнительный слой ls ~/.bash_* упрощен для прямого bash globbing.

Ответ 2

Я согласен с Деннисом выше; ваше решение должно работать (хотя точка с запятой после "done" не нужна). Однако вы также можете использовать цикл for

for f in /path/to/dir*; do
   . $f
done

Подстановка команды ls необязательна, как в ответе Дирка. Это механизм, используемый, например, в /etc/bash_completion для источника других сценариев завершения bash в /etc/bash_completion.d

Ответ 3

Oneliner (только для bash/zsh):

source <(cat *)

Ответ 4

aus man bash:

исходное имя файла [аргументы]

ein source config/*

Первый аргумент будет получен и все остальные файлы в config/будут аргументами для script его источников.

Ответ 5

for file in "$(find . -maxdepth 1 -name '*.sh' -print -quit)"; do source $file; done

Это решение является наиболее доступным, которое я когда-либо обнаружил: * Это не дает никакой ошибки, если нет файлов, соответствующих * работает с несколькими оболочками, включая bash, zsh * кросс-платформа (Linux, MacOS,...)

Ответ 6

str="$(find . -type f -name '*.sh' -print)"
arr=( $str )
for f in "${arr[@]}"; do
   [[ -f $f ]] && . $f --source-only || echo "$f not found"
done 

Я тестировал, и я использую его. Просто модифицируйте. после поиска, чтобы указать на вашу папку с вашими сценариями, и она будет работать.

Ответ 7

ok, так что я закончил делать;

eval "$(find perf-tests/ -type f -iname "*.test" | while read af; do echo "source $af"; done)"

это будет выполнять источник в текущей оболочке и maintian все переменные...

Ответ 8

Я думаю, вы должны просто быть в состоянии сделать

source ~/.bash_profile_*