bash 함수에서 cd를 실행할 때 그러한 파일이나 디렉터리가 없으며 경로가 실제로 정확합니다.

bash 함수에서 cd를 실행할 때 그러한 파일이나 디렉터리가 없으며 경로가 실제로 정확합니다.

그래서 저는 Bash에 대해 잘 모르지만 이 문제 때문에 당황했습니다. 이 switchto기능은 명령줄에서 프로젝트 사이를 쉽게 이동할 수 있는 방법을 제공합니다.

source ~/.profile
export PATH=~/bin:$PATH
export PATH=~/.composer/vendor/bin:$PATH
alias composer="php /usr/local/bin/composer.phar"

switchto () (
        cd "~/Projects/$1.com/wp-content/themes/$1"
)

나에게는 모든 것이 옳은 것 같지만, 실행하면 항상 다음과 같이 표시됩니다 switchto example.

-bash: cd: ~/Projects/example.com/wp-content/themes/example: No such file or directory

디렉토리가 실제로 존재하는지 다시 확인했습니다. 나는 bash를 처음 접했기 때문에 이것이 내가 잘못하고 있는 간단한 일인지 잘 모르겠습니다.

답변1

인용된 경우 물결표는 ~홈 디렉토리로 확장되지 않습니다.

https://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html

Tilde Expansion

단어가 인용되지 않은 물결표( ~)로 시작하는 경우 인용되지 않은 첫 번째 슬래시까지의 모든 문자(또는 인용되지 않은 슬래시가 없는 경우 모든 문자)가 고려됩니다.물결표 접두사. 물결표 접두사에 문자가 인용되지 않은 경우 물결표 접두사에서 물결표 뒤에 오는 문자는 가능한 문자로 간주됩니다.로그인 이름. 이 로그인 이름이 빈 문자열인 경우 물결표는 쉘 변수의 값으로 대체됩니다 HOME. 설정하지 않으면 HOME쉘을 실행하는 사용자의 홈 디렉토리가 대체됩니다. 그렇지 않으면 물결표 접두사가 지정된 로그인과 연결된 홈 디렉터리로 대체됩니다.

따라서 (중괄호와 함께) 다음을 사용할 수 있습니다.

switchto () {
    cd ~/"Projects/$1.com/wp-content/themes/$1"
}

PATH두 가지 정의를 다음과 결합할 수 있습니다 .

  export PATH=~/bin:~/.composer/vendor/bin:$PATH

관련 정보