Debian Wheezy를 새로 설치하고 여기에 zsh를 설치했습니다. 며칠 후 TeX Live 2014의 바닐라 설치를 완료하여 $PATH에 필요한 바이너리 경로를 추가했습니다. 스크립트를 쉽게 접근할 수 있는 곳에 두고 싶습니다 ~/bin
.
내 경로는 다음과 같습니다
~/bin:/opt/texbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
이제 TeX Live에서 무언가를 실행하고 싶다면 쉽습니다.
% which pdflatex
/opt/texbin/pdflatex
문제 없습니다. 하지만 에서 무언가를 실행하려고 하면 ~/bin
...
% which hello_world
hello_world not found
그래서 다시 확인했습니다.
% ls -l ~/bin
total 18
-rwxr-xr-x 1 bozbalci bozbalci 5382 Sep 8 00:28 hello_world
~/bin
그리고 실행 권한이 설정된 상태 에서 hello_world가 제대로 작동하고 있음을 보여 주지만 rehash
작동하지 않습니다.
답변1
다음과 같은 쉘 명령에서
PATH=~/bin:/opt/texbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
쉘 명령이 실행될 때 물결표는 홈 디렉토리로 확장됩니다. 따라서 결과 값 PATH
은
/home/theconjuring/bin:/opt/texbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
.
물결표가 따옴표( ) 안에 있지 않은지 확인하십시오. 그렇지 않으면 물결표가 현재 값 앞에 디렉토리를 추가하려면 다음을 PATH="~/bin:…"
PATH
사용할 수 있습니다 .
PATH=~/bin:$PATH
일반적으로 zsh 이외의 쉘에서는 $PATH
큰따옴표 밖에값에 공백이나 기타 특수 문자가 포함되면 중단됩니다., 하지만 직장에서는 안전합니다. 그러나 for를 export
작성해야 합니다 ( 이미 환경에 있으므로 with는 export PATH=~/bin:"$PATH"
필요하지 않지만 ). zsh에서는 변수가 비어 있지 않으면 큰따옴표가 필요하지 않지만 in is set 이면 or 에 의해 처리 됩니다 .export
PATH
PATH
.profile
/bin/sh
/bin/bash
PATH
단, 로 설정하면 ~/.pam_environment
홈 디렉토리를 사용 ~
하거나 표현할 수 없습니다. $HOME
파일은 셸에서 구문 분석되지 않으며 간단한 NAME=value
줄 목록입니다. 따라서 전체 경로를 작성해야 합니다.
답변2
업데이트: 배쉬~ 할 것이다PATH 변수에서 ~를 확장합니다. 하지만 조심하세요. Python은 그렇지 않습니다. 나는 이것을 어려운 방법으로 발견했습니다.
$ export PATH="~/foo:$PATH"
$ type -a foo.sh
foo.sh is /home/myles/foo/foo.sh
Python 3.9.11 (main, Sep 2 2022, 07:10:47)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.6.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: shutil.which('foo.sh')
None