Кажется, это не работает. можно спросить здесь:форум xfce Но я думаю, что это ошибка, и вы можете сообщить об этом здесь:ошибка xfce
..bashrc
запустит содержимое .bashrc
в текущей оболочке. Обычно вам не нужно этого делать, поскольку .bashrc
считывается оболочкой при ее запуске, но если вы вносите в нее изменения и хотите перезагрузить их, вы можете это сделать.
Но выполнение этого в одной интерактивной оболочке не должно влиять на другие оболочки, которые вы запускаете при последующих входах в систему.
То, что у вас там в .bashrc
, несколько странно, хотя:
export PATH=$PATH:$HOME/.local/bin:$HOME/bin/prog1:$PATH
^^^^^ ^^^^^
Обратите внимание, как вы помещаете старый $PATH
в начало и конец нового PATH
пять раз. По моим подсчетам, это поместит оригинал $PATH
32 раза. Это не так уж плохо, но если это было сделано при запуске оболочки, ваш $PATH
теперь будет состоять из нескольких тысяч символов, и если вы затем сделаете то же самое снова, он может оказаться намного длиннее 100 КБ. Начиная с моего $PATH
из 74 символов, выполнение этих назначений дважды дает строку размером 172 КБ.
И это может быть проблемой. :Linux имеет ограничение в 128 КБ на длину одного аргумента командной строки (в дополнение к ограничению на всю партию ). Переменные среды и аргументы командной строки передаются аналогичным образом в execve()
, поэтому предположительно одно и то же ограничение применяется к обоим, и, следовательно, PATH
.
Замените первый набор строк export
этим
export PATH="$PATH:$HOME/.local/bin:$HOME/bin"
[[ -d "$HOME/bin/prog1" ]] && PATH="$PATH:$HOME/bin/prog1"
[[ -d "$HOME/bin/prog2" ]] && PATH="$PATH:$HOME/bin/prog2"
[[ -d "$HOME/prog2" ]] && PATH="$PATH:$HOME/prog2"
[[ -d "$HOME/prog2/bin" ]] && PATH="$PATH:$HOME/prog2/bin"
[[ -d "$HOME/bin/prog3/tools/newtool" ]] && PATH="$PATH:$HOME/bin/prog3/tools/newtool"
Происходило то, что вы удваивали $PATH
в каждой строке($PATH
+ новый элемент +$PATH
). Очень странно.
В этом коде замены каждый раздел [[... ]]
гарантирует, что соответствующий каталог существует, прежде чем добавить его в ваш $PATH
. Не обязательно, но определенно чище