Я использую fish в качестве оболочки в Debian, и недавно (после некоторого обновления), когда я пытаюсь использовать завершение команды, у меня есть:
set: No such file or directory
set: Could not add component /usr/lib/x86_64-linux-gnu/libfm to PATH.
set: No such file or directory
Запуск этого:
echo $PATH
Дает мне это:
/usr/lib/x86_64-linux-gnu/libfm /usr/local/bin /usr/bin /bin /usr/local/games /usr/games
В моей системе нет /usr/lib/x86_64-linux-gnu/libfm
, поэтому я понимаю, почему fish жалуется, но я не могу найти, как удалить этот путь из моей $PATH
переменной.
Кто-нибудь знает, как я могу это сделать?
shell
path
environment-variables
fish
tomekK
источник
источник
grep -R /usr/lib/x86_64-linux-gnu/libfm ~/.config/fish /usr/share/fish
??Ответы:
'Fish' способ установки переменной $ PATH - это использование
set --universal fish_user_paths $fish_user_paths /new/path/here
. Затем $ fish_user_paths фактически добавляется к переменной $ PATH, когда начинается новый сеанс. $ PATH документация в настоящее время не расскажет вам , как удалить его , хотя.В fish каждая переменная фактически является списком (массивом), и вы можете легко получить доступ к каждому элементу напрямую, используя индекс / индекс.
echo $fish_user_paths
распечатает пространство разграничены версии каждого элемента в списке, то пространства новой строки с функцией перевода ,echo $fish_user_paths | tr " " "\n"
а затем положить номера строк на нем с номером строки функционируют,echo $fish_user_paths | tr " " "\n" | nl
. Затем удалите его с помощьюset --erase --universal fish_user_paths[5]
. Вы должны использовать--universal
или он не будет работать в любых новых сессиях.Если у кого-то есть время, пожалуйста, отправьте PR в репозиторий с этим примером. Я открыл вопрос здесь .
tldr;
echo $fish_user_paths | tr " " "\n" | nl
// получаем номер того, который вы хотите удалить, например, 5-йset --erase --universal fish_user_paths[5]
// стираем 5-й путь универсально, чтобы он сохранялся в новых сессияхисточник
Как говорит Илия, лучшая практика - это модификация,
fish_user_paths
а не глобальнаяPATH
. Чтобы не приходилось гуглить это снова ...fish_user_paths
Чтобы добавить к пути пользователя:
Чтобы удалить путь пользователя, если он существует (частичное признание этого ):
И конечно, чтобы сделать их автозагрузкой :
Пример использования:
источник
Это должно стереть пути 6 до последнего пути:
Флаг -e стирается. См
help set
.источник