vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2025-04-22 03:19 pm

Линуксисту на заметку

Полезные примитивы управления путём 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
malyj_gorgan: (Default)

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

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

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

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