![bash 함수에서 cd를 실행할 때 그러한 파일이나 디렉터리가 없으며 경로가 실제로 정확합니다.](https://linux55.com/image/161737/bash%20%ED%95%A8%EC%88%98%EC%97%90%EC%84%9C%20cd%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EB%95%8C%20%EA%B7%B8%EB%9F%AC%ED%95%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%EB%82%98%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EA%B0%80%20%EC%97%86%EC%9C%BC%EB%A9%B0%20%EA%B2%BD%EB%A1%9C%EA%B0%80%20%EC%8B%A4%EC%A0%9C%EB%A1%9C%20%EC%A0%95%ED%99%95%ED%95%A9%EB%8B%88%EB%8B%A4..png)
그래서 저는 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