별칭에 dir var를 사용하시겠습니까?

별칭에 dir var를 사용하시겠습니까?

다음과 같은 디렉토리 변수와 기능이 있습니다.

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

답변1

$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 ; }

답변2

문제는 따옴표와 함께 물결표 문자를 사용하여 발생합니다. 예를 들어 내 시스템의 다음 기록을 참조하세요.

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

물결표는 따옴표 안에 들어 있기 때문에 확장되지 않습니다.

관련 정보