Kevin Asked: 2018-04-03 14:43:32 +0800 CST2018-04-03 14:43:32 +0800 CST 2018-04-03 14:43:32 +0800 CST 在别名中使用 dir var? 772 我有一个目录变量和函数如下: coding_dir="~/Documents/coding" function f() { cd $1 && ls -a ; } 我想创建一个别名如下: alias rnd="f $coding_dir/random" 但是当我尝试使用别名时,出现以下错误: f:cd: no such file or directory: /random 我知道我可以只使用别名中的整个目录,但是当我使用bash. 我怎样才能让它工作zsh? zsh alias 2 个回答 Voted Best Answer filbranden 2018-04-03T14:51:03+08:002018-04-03T14:51:03+08:00 是否可以在设置 $coding_dir 之前定义别名?从错误消息来看,看起来就是这样。 问题是您在定义别名时扩展 $coding_dir,而不是在使用它时。 如果您希望它在使用时扩展它,那么您可能应该使用单引号定义它,以便它只会在使用时扩展 $coding_dir。 alias rnd='f $coding_dir/random' 即使您尚未定义 $coding_dir 并稍后定义它,这也将起作用: $ coding_dir=~/Documents/coding $ rnd (should chdir to your $HOME/Documents/coding/random) 您可能还想在别名中添加引号,以便它处理带有空格的目录名称: alias rnd='f "$coding_dir"/random' 在你对 f 函数的定义中: function f() { cd "$1" && ls -a ; } user1934428 2018-04-04T23:12:04+08:002018-04-04T23:12:04+08:00 问题是由您使用波浪号和引号引起的。例如,请参阅我系统中的此成绩单: -0-1- ~ > x="~/tmp" -0-1- ~ > cd $x cd: no such file or directory: ~/tmp -1-1- ~ > y="$HOME/tmp" -0-1- ~ > cd $y -0-1- ~/tmp > cd .. -0-1- ~ > z=~/tmp -0-1- ~ > cd $z -0-1- ~/tmp > 您的波浪号不会被扩展,因为它被放在引号内。
是否可以在设置 $coding_dir 之前定义别名?从错误消息来看,看起来就是这样。
问题是您在定义别名时扩展 $coding_dir,而不是在使用它时。
如果您希望它在使用时扩展它,那么您可能应该使用单引号定义它,以便它只会在使用时扩展 $coding_dir。
即使您尚未定义 $coding_dir 并稍后定义它,这也将起作用:
您可能还想在别名中添加引号,以便它处理带有空格的目录名称:
在你对 f 函数的定义中:
问题是由您使用波浪号和引号引起的。例如,请参阅我系统中的此成绩单:
您的波浪号不会被扩展,因为它被放在引号内。