В конце вашего скрипта поставьте строку:
PATH=${PATH}:$(find ~/code -type d | tr '\n' ':' | sed 's/:$//')
Это добавит каждый каталог в вашем дереве ~ / code к текущему пути. Сама идея мне не нравится, я предпочитаю, чтобы только несколько каталогов содержали мои собственные исполняемые файлы и явно перечисляли их, но для каждого свои.
Если вы хотите исключить все скрытые каталоги, вам, по сути, нужно удалить каждую строку, имеющую последовательность "/."
(чтобы не проверять подкаталоги и в скрытых каталогах):
PATH=${PATH}:$(find ~/code -type d | sed '/\/\\./d' | tr '\n' ':' | sed 's/:$//')
Это остановит вас от получения каталогов, таких как ~/code/level1/.hidden/level3/
(то есть, он остановит поиск в поддеревьях, как только обнаружит, что они скрыты). Если вы хотите только сохранить скрытые каталоги, но при этом разрешить скрытые каталоги под ними, используйте:
PATH=${PATH}:$(find ~/code -type d -name '[^\.]*' | tr '\n' ':' | sed 's/:$//')
Это позволило бы ~/code/level1/.hidden2/level3/
, но запретить ~/code/level1/.hidden2/.hidden3/
, поскольку -name
проверяет только базовое имя файла, а не полный путь.