所以我对 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
如果单词以不带引号的波形符 (
~
) 开头,则直到第一个不带引号的斜杠之前的所有字符(或所有字符,如果没有不带引号的斜杠)都将被视为波形符前缀。如果波形符前缀中的任何字符都没有被引用,则波形符前缀中跟随波形符的字符将被视为可能的字符登录名。如果此登录名是空字符串,则波浪号将替换为 shell 变量的值HOME
。如果HOME
未设置,则会替换执行 shell 的用户的主目录。否则,波形符前缀将替换为与指定登录名关联的主目录。
所以你可以使用(带花括号):
switchto () {
cd ~/"Projects/$1.com/wp-content/themes/$1"
}
你可以将你的两个PATH
定义与
export PATH=~/bin:~/.composer/vendor/bin:$PATH