Postgres.app 웹사이트에서 이 멋진 트릭을 찾았습니다.
echo /Users/user1/latest/bin | sudo tee /etc/paths.d/postgresapp
알고 싶습니다. 어떻게 해야 하나요?어느로그인한 사용자입니다. 나는 다음과 같은 것을 원한다
echo {whatever the home directory of the logged in user at runtime}/latest/bin | sudo tee /etc/paths.d/postgresapp
내 첫 번째 생각은 해당 변수를 사용해 보는 것이었지만 $HOME
내 home 변수는 내 홈 디렉터리를 가리키며 모든 사용자가 Mac에 로그인하여 Terminal.app을 사용할 때 이 변수가 작동하도록 하고 싶습니다.
답변1
실험을 통해 제가 아는 한, 이 작업을 수행하는 데 사용할 수는 없지만 $HOME
다른 방법이 있다는 것이 대답입니다.
HOME
현재 사용자의 경로를 포함하므로(환경은 프로세스별이라는 점을 기억하세요), $HOME/latest/bin
라인을 추가할 때 경로를 확장하지 않고 경로를 포함하는 파일을 만드는 것이 당연한 시도입니다. ( 명령줄에서 echo '$HOME/blah...'
작은따옴표를 사용하는 경우입니다.)
그런 다음 셸이 이러한 파일을 읽고 경로를 설정할 때 해당 콘텐츠를 삽입할 수 있기를 원합니다. 그러나 path-helper
사용된 도구가 /etc/paths.d
달러 기호를 벗어나는 것처럼 보이기 때문에 이는 작동하지 않습니다 .
$ cat /etc/paths.d/test
$HOME/test
$ PATH="" /usr/libexec/path_helper -s
PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:\$HOME/test"; export PATH;
따라서 경로에 문자 그대로 달러 기호가 표시됩니다.
Bash에만 관심이 있다면 물결표( ~
)를 대신 사용할 수 있습니다 $HOME
. 이스케이프되지 않으며 인용될 수 있습니다 . 하지만 so PATH
에서는 작동하지 않으므로 일반적인 해결책은 아닙니다.ksh
zsh
/etc/profile
대신 에 (또는 /etc/zprofile
. zsh
) 디렉토리를 수동으로 추가할 수 있습니다 .
내 시스템에서 /etc/profile
이 코드 조각은 아래에 지정된 경로를 설정합니다 path_helper
.
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
PATH
파일 어딘가에 할당을 추가합니다.
PATH="$HOME/latest/bin:$PATH"
해당 줄을 에 대한 호출 뒤에 넣으면 디렉토리는 섹션의 시작 부분에 있게 되고 , path_helper
앞에 넣으면 결과 경로의 끝으로 이동하는 것처럼 보입니다.path_helper
path_helper
답변2
echo '$HOME/latest/bin' | sudo tee /etc/paths.d/postgresapp