LINUX.ORG.RU

Возможно ли в переменной $PATH использовать регулярки ? ($path regex)

 , ,


0

1

Дело в том что, некоторые файлы которые я собираю из сорцов храню отдельно для удобства и чтоб не перемешивалось в /usr/LOCAL

путь примерно такой

/usr/LOCAL/nginx/sbin  и т.д.

Написал простой скриптик для этого дела, но охота регулярку только вот не получается, может подскажете способы и вообще возможно ли это, среда BASH.

#!/bin/bash                                                                                                                                           
                                                                                                                                                      
path_to="$HOME/.shell_source/export"                                                                                                                             
sbin_out=$(find /usr/LOCAL/* -name 'sbin'   |sed ':a;N;$!ba;s/\n/:/g')                                                                                
bin_out=$(find /usr/LOCAL/* -name 'bin'     |sed ':a;N;$!ba;s/\n/:/g')                                                                                
lib_out=$(find /usr/LOCAL/* -name 'lib'     |sed ':a;N;$!ba;s/\n/:/g')                                                                                
check_sbin_out=$(find /usr/LOCAL/* -name 'sbin' |wc -l)                                                                                               
check_bin_out=$(find /usr/LOCAL/* -name 'bin' |wc -l)                                                                                                 
check_lib=$(find /usr/LOCAL/* -name 'lib' |wc -l)                                                                                                     
curr_path=$(echo 'PATH="$HOME/.local/bin:$PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin"')                                                   
lib_path=$(echo 'LD_LIBRARY_PATH="$HOME/.local/lib:/lib:/usr/lib:/usr/local/lib"')                                                                    
                                                                                                                                                      
sb=$(echo "$sbin_out:$bin_out")                                                                                                                       
                                                                                                                                                      
        if [[ $check_sbin_out = "0" ]]; then                                                                                                          
                sb=$(echo "$sb" |sed 's/^://')                                                                                                        
        fi                                                                                                                                            
                                                                                                                                                      
        if [[ $check_bin_out = "0" ]]; then                                                                                                           
                sb=$(echo "$sb" |sed 's/:$//')                                                                                                        
        fi                                                                                                                                            
                                                                                                                                                      
curr_path=$(echo "$curr_path"       |sed 's/"$//')                                                                                                    
curr_path=$(echo "$curr_path:$sb\"" |sed 's/\//\\\//g')                                                                                               
sed -i "9s/^.*$/$curr_path/" $path_to                                                                                                                 
                                                                                                                                                      
        if [[ $check_lib = "0" ]]; then                                                                                                               
                echo '/usr/LOCAL/*/lib not found'                                                                                                     
        else    lib_path=$(echo "$lib_path" |sed 's/"$//')                                                                                            
                lib_path=$(echo "$lib_path:$lib_out\"" |sed 's/\//\\\//g')                                                                            
                sed -i "11s/^.*$/$lib_path/" $path_to                                                                                                 
        fi                                                                                                                                            
exit 0

А если бы ты не занимался извращением, а хранил файлы там, где им положено быть - в /usr/local, то вообще ничего править бы не пришлось.

Kroz ★★★★★ ()
Ответ на: комментарий от Kroz

А если бы ты не занимался извращением, а хранил файлы там, где им положено быть - в /usr/local

Ретроград, надо в /nix/store.

t184256 ★★★★★ ()
Ответ на: комментарий от sanekmihailow

были проблемы с питоном из-за этого, с тех пор стараюсь утилиты, собранные из сорцов отдельно хранить

Вот нужно решать проблемы, а не заниматься велосипедостроением.

Есть проблема - создавай тему. А если будешь отходить от принятых практик, поимеешь еще больше проблем.

Kroz ★★★★★ ()
Ответ на: комментарий от Kroz

в /usr/local

Можно делать симлинки. Если в рабочих дирах творится содомия, то можно выносить симлинки на бинари в отдельную диру, и уже на них делать симлинки в /usr/local/bin (да, симлинки на симлинки). У меня так тестовая билд-ферма устроена (лучше можно, но… работает — не трогай).

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

я так и делаю через xstow, короче походу придется пользоваться скриптом

sanekmihailow ()
Ответ на: комментарий от Kroz

+1

А вообще, 99% проблем с питоном решаются при помощи virtualenv

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.