vak: (Знайка)
[personal profile] vak
Полезные примитивы управления путём PATH. Вставляются в ~/.bashrc. Правятся по вкусу.
append_path() {
    local dir="$1"
    if [[ -d "$dir" ]]; then
        if [[ -d "$dir" && ":$PATH:" != *":$dir:"* ]]; then
            export PATH="$PATH:$dir"
        fi
    fi
}
prepend_path() {
    local dir="$1"
    if [[ -d "$dir" ]]; then
        if [[ -d "$dir" && ":$PATH:" != *":$dir:"* ]]; then
            export PATH="$dir:$PATH"
        fi
    fi
}
remove_path() {
    local dir="$1"
    if [[ ":$PATH:" == *":$dir:"* ]]; then
        local new_path=":$PATH:"
        new_path="${new_path//:$dir:/:}"
        new_path="${new_path#:}"
        export PATH="${new_path%:}"
    fi
}
remove_path /usr/games
remove_path /usr/local/games
remove_path .
append_path /usr/sbin
append_path /usr/bin
append_path /snap/bin
prepend_path /usr/local/bin
prepend_path /usr/local/sbin
prepend_path $HOME/.local/bin

Date: 2025-04-22 23:25 (UTC)
malyj_gorgan: (Default)
From: [personal profile] malyj_gorgan
Прикольно.
Мені би знадобилося все те ж саме для zsh
(Взагалі, поки все було sh, життя було простіше, а потім tcsh, zsh, bash -- все трошки подібне і трошки різне, в результаті, якщо щось колись і знав, то все забув, дурний find кожен раз не впевнений, як вживати...)

Date: 2025-04-23 04:28 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Хм, полезное.

Date: 2025-04-23 07:12 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Все це дуже добре, поки в PATH не вклиниться якийсь лівий каталог, в якому буде лежати дбайливо заготовлений `ls` із `rm -rf /` всередині. Особливо, коли той каталог препендед до /bin та /sbin.

Нє-нє-нє, Девід Блейн, тільки руцями, тільки очима, тричі перевіривши.