나는 데비안에서 쉘로 피쉬를 사용하고 있으며 명령 완료를 사용하려고 할 때마다 최근 (업그레이드 후) :
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
물고기가 왜 불평하는지 이해하지만 $PATH
변수 에서이 경로를 제거하는 방법을 찾을 수 없습니다 .
아무도 내가 어떻게 할 수 있는지 알고 있습니까?
답변
$ PATH 변수를 설정하는 ‘물고기’방법은 실제로를 사용하는 것 set --universal fish_user_paths $fish_user_paths /new/path/here
입니다. 그런 다음 새 세션이 시작될 때 $ fish_user_paths가 실제로 $ PATH 변수 앞에 추가됩니다. $ PATH 설명서 에는 현재 삭제 방법이 나와 있지 않습니다.
물고기에서 모든 변수는 실제로 목록 (배열)이며 인덱스 / 인디언을 사용하여 각 항목에 직접 편리하게 액세스 할 수 있습니다. echo $fish_user_paths
목록에있는 모든 항목의 공백으로 구분 된 버전을 인쇄하고, 변환 기능을 사용하여 공백을 개행 echo $fish_user_paths | tr " " "\n"
한 다음 number lines 기능을 사용하여 행 번호를 지정합니다 echo $fish_user_paths | tr " " "\n" | nl
. 그런 다음로 삭제하십시오 set --erase --universal fish_user_paths[5]
. --universal
새 세션에서 사용해야 합니다.
누군가 시간이 있다면, 이 예제와 함께 repo에 PR을 제출하십시오 . 나는 여기 에 문제를 열었다 .
tldr;
echo $fish_user_paths | tr " " "\n" | nl
// 삭제하고자하는 번호 (예 : 5 번째 번호)를 얻습니다.set --erase --universal fish_user_paths[5]
// 다섯 번째 경로를 보편적으로 삭제하여 새로운 세션에서 지속
답변
엘리야가 말한 것처럼 모범 사례는 fish_user_paths
전역 이 아닌 수정하는 것 PATH
입니다. 다시 Google에 접속하지 않으려면 …
- 수정 만하는 몇 가지 함수 만들기
fish_user_paths
- 두 기능 모두 자동 로딩
사용자 경로에 추가하려면
function addpaths
contains -- $argv $fish_user_paths
or set -U fish_user_paths $fish_user_paths $argv
echo "Updated PATH: $PATH"
end
사용자 경로를 제거하기 위해 존재하는 경우 (부분적인 신용 이 ) :
function removepath
if set -l index (contains -i $argv[1] $PATH)
set --erase --universal fish_user_paths[$index]
echo "Updated PATH: $PATH"
else
echo "$argv[1] not found in PATH: $PATH"
end
end
그리고 물론, 자동로드되도록하려면 :
funcsave addpaths; funcsave removepath
사용법 예 :
> addpaths /etc /usr/libexec
Modifying PATH: /usr/local/bin /usr/bin /bin /usr/sbin /sbin
Updated PATH: /etc /usr/libexec /usr/local/bin /usr/bin /bin /usr/sbin /sbin
> removepath /usr/libexec
Modifying PATH: /etc /usr/libexec /usr/local/bin /usr/bin /bin /usr/sbin /sbin
Updated PATH: /etc /usr/local/bin /usr/bin /bin /usr/sbin /sbin
답변
마지막 경로에서 경로 6을 지워야합니다.
set -e PATH[6..-1]
-e 플래그가 지워집니다. 참조하십시오 help set
.