tcsh에서는 별명을 원하고 다른 디렉토리로 이동합니다 pwd
.cd
이전에는 이를 위해 다음 별칭을 사용했지만 쉘 프롬프트도 로 변경되었습니다 [current directory]>
. 프로젝트 요구로 인해 더 이상 쉘 프롬프트를 변경할 수 없지만 여전히 매번 사용하고 싶습니다 cd
.
alias cd 'cd \!* ; set cwd=`pwd`;pwd;set prompt=$cwd:t\ \!\>\ '
위의 별칭을 사용하여 제거하려고 시도했지만 set prompt
작동하지 않았습니다(구문을 이해하지 못합니다).
답변1
다음은 나에게 효과적이었습니다.
alias cd 'cd \!*; set cwd=`pwd`; pwd'
cd
이는 세 가지 명령을 실행하는 별칭으로 대체됩니다 .
cd \!*
그러면 디렉토리가 변경됩니다.
set cwd=`pwd`
결과를 변수 pwd
에 저장 하고 마지막으로cwd
pwd
현재 디렉토리를 인쇄합니다.
두 번째 명령은 프롬프트에서 필요하지 않으므로 더 이상 유용하지 않으므로 다음과 같이 단순화할 수 있습니다.
alias cd 'cd \!*; pwd'
아니면 더 나은 방법은
alias cd 'cd -p \!*'
옵션을 사용하여 -p
결과 디렉터리를 인쇄합니다.
( 에서는 변수에 저장하는 대신 tcsh
프롬프트에서 또는 를 지정하여 현재 작업 디렉터리를 가져올 수 있습니다 . 모든 경우에 전체 경로를 제공하고 가능한 경우 단순화를 사용하세요.)%/
%~
%/
%~
~
답변2
당신 은 tcsh
특별을 정의할 수 있습니다cwdcmd
훅현재 작업 디렉터리가 변경될 때마다 호출되는 별칭:
alias cwdcmd pwd
zsh
이 개념을 복제했습니다(후크 사용).기능바꾸다별명( tcsh
기능 없음)):
chpwd() pwd
어쨌든, 현재 작업 디렉토리의 후행 부분을 프롬프트에 표시하려면 그런 것이 필요하지 않습니다.
set prompt='%c !> '
충분할 것입니다. 또한 변수는 자체적으로 tcsh
설정 되므로 $cwd
별칭에서 수동으로 설정할 필요가 없습니다 cd
.
답변3
또 다른 옵션은 를 사용하는 것인데 rprompt
, 이는 프롬프트와 완전히 동일하지만옳은옆:
예를 들어 set rprompt="%~"
:
% cd /usr/local/bin/ ~
% echo Hello /usr/local/bin
Hello
% /usr/local/bin
prompt
여기 에서 별칭을 사용할 수도 있습니다 rprompt
.
이것이 일반 프롬프트를 변경하지 못하게 하는 "프로젝트 요구 사항"을 충족하는지 모르겠지만 어쩌면 옵션일 수도 있습니다.