
$PATH
임시 개발 환경을 설정할 수 있도록 변수 앞에 몇 개의 디렉터리를 일시적으로 추가하고 싶습니다 . 다른 Fish 세션에서 보는 내용은 변경하고 싶지 않습니다.
setup-env.fish
그래서 나는 올바른 경로를 시작 부분에 추가하여 우선 순위를 갖는 스크립트를 원합니다 $PATH
.
내 간단한 테스트는
set -gx tool_dir "/home/jesse/sandbox/tools"
set PATH "$tool_dir/language/bin" $PATH
echo "Evnironment Set up"
나는 이러한 디렉토리가 존재하는지 확인했습니다. 쉘을 열고 스크립트를 실행하면 echo $PATH
디렉토리가 표시되지 않습니다.
지속적으로 디렉터리를 추가한 set -U fish_user_paths path $fish_user_paths
다음 이를 전역 $PATH
변수에 추가하는 방법이 있다는 것을 알고 있습니다. 하지만 나는 이것을 원하지 않습니다. 다른 도구를 사용하려는 경우 시스템 변수를 너무 많이 조정하고 싶지 않습니다. 원한다면 먼저 $PATH
쉘을 추가하고 닫고 싶습니다. 나는 Fish 문서 중 일부와 변경 사항에 대한 일부 github 문제를 읽었 $PATH
으며 일부 변수가 Fish에 의해 다르게 처리된다는 사실을 수집했습니다. 따라서 여기서 다른 것이 누락되었는지 잘 모르겠습니다.
셸에서 이 명령을 실행하면 작동하지만 스크립트에서 더 많은 작업을 수행하고 싶고 모든 내용을 입력하고 싶지는 않습니다.
XUbuntu 16.04에서 Fish 2.7.1을 사용하고 있습니다.
답변1
나생각하다범위는 현재 셸 내에서만 변경할 수 있습니다 fish_user_paths
. 이 Fish 세션을 종료해도 이 변수의 일반 값은 영향을 받지 않을 것이라고 생각합니다.
set -g fish_user_paths "$tool_dir/language/bin" $fish_user_paths
답변2
source
내가 원하는 방식으로 작동하려면 스크립트를 실행하는 대신 스크립트를 사용해야 했습니다 .
답변3
또 다른 옵션은 물고기 기능을 만드는 것입니다. Fish 쉘의 경우 -x는 하위에 전달되는 임시 변수이고, -l은 하위에 전달되지 않는 임시 변수입니다. 기능을 전환하려는 경우. vim을 사용하여 다음과 같이 함수를 작성하세요.
funced -e vi name_of_function
function name_of_function
set -x PATH /home/username/some_path $PATH
end
funcsave name_of_function
이제 대체 경로를 활성화하려면 name_of_function을 입력하세요.
현재 터미널의 하위 터미널이 아닌 다른 터미널을 열 경우, name_of_function을 다시 실행하지 않는 이상 임시 값을 사용하지 않습니다.
아니면 파일을 만들 수도 있어요
#!/usr/bin/fish
set -x PATH /home/username/some_path $PATH
그리고 할
source ~/file_name