생선 껍질 기능
내 PATH에 너무 중복된 경로가 있습니다.
어제 PATH 환경 값을 정리하고 있었습니다.
내 경로에 중복 경로가 너무 많다는 것을 알았습니다.
내 복제된 PATH env.
~> set -S PATH
$PATH: set in global scope, exported, a path variable with 27 elements
$PATH[1]: |/home/myoungjin/.local/share/go/bin|
$PATH[2]: |/home/myoungjin/.local/share/rakudo/share/perl6/site/bin|
$PATH[3]: |/home/myoungjin/.local/share/rakudo/bin|
$PATH[4]: |/home/myoungjin/.rakudo/install/share/perl6/site/bin|
$PATH[5]: |/home/myoungjin/.rakudo/install/bin|
$PATH[6]: |/home/myoungjin/.ghcup/bin|
$PATH[7]: |/home/myoungjin/.local/bin|
$PATH[8]: |/home/myoungjin/perl5/bin|
$PATH[9]: |/home/myoungjin/sbin|
$PATH[10]: |/home/myoungjin/bin|
$PATH[11]: |/home/myoungjin/perl5/bin|
$PATH[12]: |/home/myoungjin/bin|
$PATH[13]: |/home/myoungjin/.local/share/go/bin|
$PATH[14]: |/home/myoungjin/.local/share/rakudo/share/perl6/site/bin|
$PATH[15]: |/home/myoungjin/.local/share/rakudo/bin|
$PATH[16]: |/home/myoungjin/.rakudo/install/share/perl6/site/bin|
$PATH[17]: |/home/myoungjin/.rakudo/install/bin|
$PATH[18]: |/home/myoungjin/.ghcup/bin|
$PATH[19]: |/home/myoungjin/.local/bin|
$PATH[20]: |/home/myoungjin/perl5/bin|
$PATH[21]: |/home/myoungjin/sbin|
$PATH[22]: |/home/myoungjin/bin|
$PATH[23]: |/usr/local/bin|
$PATH[24]: |/usr/bin|
$PATH[25]: |/usr/bin/site_perl|
$PATH[26]: |/usr/bin/vendor_perl|
$PATH[27]: |/usr/bin/core_perl|
코드 블록 만들기 시작(함수)
그래서 새 PATH에 내 앱에 대한 새 경로를 추가했을 때 이미 존재 가능성을 확인하지 않았다는 것을 알았습니다.
확인하는 방법은 수백만 가지가 있습니다. 아마도 유명한 방법
외부 프로그램으로
function elem_ -d 'find first value is in the list of rest values'
# note: fish index start from 1
for p in $argv[2..-1]; echo $p; end | grep -q $argv[1]
end
그러나 기본을 사용하여 순수한 생선 껍질 스크립트를 사용하는 것은 어떻습니까?
물고기가 제공하는 배열. 그래서 내 첫 번째 시도는 다음과 같았습니다.
function elem -d 'find first value is in the list of rest values'
set found 0
for arg in $argv[2..-1]
if test $found -eq 0 && test $arg = $argv[1]
set found 1
break
end
end
if test $found -eq 1
true
else
false
end
end
~> elem 1 1 2 3
~> echo $status
0
물고기 껍질에 영구적으로 기능 추가
이제 파일 경로가 있는 파일을 만들 수 있습니다.
~/.config/fish/functions/elem.fish
사용하고 싶을 때 언제든지 사용할 수 있도록.
이제 확인하는 방법을 만들었습니다.
append_to_path
또는 prepend_to_path
기능을 이렇게 만들 수 있습니다.~/.config/functions/fish/append_to_path.fish
function append_to_path -d 'append given path into PATH environment variable with checking '
if ! elem $argv[1] $PATH
set -x --append PATH $argv[1]
end
end
이제 안전하게 경로를 추가할 수 있습니다.
# middle of ~/.config/fish/config.fish
for p in ~/perl5/bin ~/.local/share/go/bin ~/.ghcup/bin \
~/.cabal/bin
append_to_path $p
end
읽어 주셔서 감사합니다!
물고기의 기능에 대해 더 알고 싶다면
내 블로그 게시물을 방문하십시오.
Reference
이 문제에 관하여(생선 껍질 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jeongoon/fish-shell-function-p2l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)