Bash를 '~'로 변환하려면 어떻게 해야 하나요?

Bash를 '~'로 변환하려면 어떻게 해야 하나요?

일부 프로그램은 파일 이름의 물결표 단축키를 인식하지 못하고 전체 표준 경로(예 /home/dave/myfile.txt: ~/myfile.txt.

물결표가 사용될 때마다 bash를 교체 ~하고 전체 표준 경로로 만들 수 있는 방법이 있습니까 ?~user

답변1

글쎄, Perl에 대해서는 잘 모르겠지만 bash 스크립트에서는 eval을 사용하여 해당 변환을 수행할 수 있습니다.

eval dir='~user/somedir'

$dir에는 전체 경로, 즉 이 시점에서 /home/user/somedir이 포함됩니다.

답변2

Bash 셸에서 다음과 같은 명령을 실행할 때:

command ~/myfile.txt

쉘은 먼저 (인용되지 않는 한) 확장을 한 ~다음 결과와 함께 명령을 실행합니다.

그러나 일부 프로그램은 를 해석하지 않습니다 ~. 예를 들면 다음과 같습니다.

$ cat "~/myfile.txt"
~/myfile.txt: No such file or directory

하지만 이것은 다음과 같이 작동합니다.

nano "~/myfile.txt"

하지만 이 동작은 Bash 확장에 의해 가려져 있으므로더 이상의 해석은 필요하지 않습니다.

어쩌면 당연할 수도 있지만 프로그램이 구성 파일을 사용하고 그 안에 일부 경로가 필요한 경우 해당 파일을 확장하는 것은 Bash 의무가 아닙니다.

관련 정보