$PATH 환경 변수가 인식되지 않는 것 같습니다.

$PATH 환경 변수가 인식되지 않는 것 같습니다.

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 에 의해 처리 됩니다 .exportPATHPATH.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

관련 정보