Usando o dir var em um alias?

0

Eu tenho uma variável de diretório e função da seguinte forma:

coding_dir="~/Documents/coding"
function f() { cd $1 && ls -a ; }

Eu quero criar um alias da seguinte forma:

alias rnd="f $coding_dir/random"

Mas quando eu tento usar o alias, recebo o seguinte erro:

f:cd: no such file or directory: /random

Estou ciente de que poderia usar o diretório inteiro no alias, mas isso estava funcionando quando eu estava usando bash . Como faço para que isso funcione em zsh ?

    
por Kevin 03.04.2018 / 00:43

2 respostas

2

É possível que você esteja definindo o alias antes de definir $ coding_dir? Da mensagem de erro, parece que é isso que está acontecendo.

O problema é que você está expandindo $ coding_dir no momento em que o alias é definido, não quando é usado.

Se você quiser expandi-lo em tempo de uso, provavelmente deverá defini-lo usando aspas simples, para que ele só expanda $ coding_dir quando for usado.

alias rnd='f $coding_dir/random'

Isso funcionará mesmo que você ainda não tenha definido $ coding_dir e o defina depois:

$ coding_dir=~/Documents/coding
$ rnd
(should chdir to your $HOME/Documents/coding/random)

Você também pode querer adicionar aspas ao seu alias, para que ele lide com nomes de diretórios com espaços:

alias rnd='f "$coding_dir"/random'

E também na sua definição da função f:

function f() { cd "$1" && ls -a ; }
    
por 03.04.2018 / 00:51
0

O problema é causado pelo uso do til combinado com aspas. Veja por exemplo esta transcrição do meu sistema:

-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 >

Seu til não será expandido, porque é colocado entre aspas.

    
por 04.04.2018 / 09:12

Tags