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
kondybas: (Default)

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

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

[personal profile] ichthuss 2025-04-23 08:30 am (UTC)(link)
Ось одна з причин, за що я не люблю скриптові мови. Банальний коректний ексейпинг строчки перетворюється на шаманство 80-го рівня.