bash를 통해 OS X에서 응용 프로그램의 별칭을 지정하는 올바른 방법은 무엇입니까?

bash를 통해 OS X에서 응용 프로그램의 별칭을 지정하는 올바른 방법은 무엇입니까?

내에는 ~/.bashrc다음과 같은 여러 별칭이 있습니다.

alias emacs='/Applications/Aquamacs.app/Contents/MacOS/Aquamacs'
alias octave='/Applications/Octave.app/Contents/Resources/bin/octave'
alias wine='/Applications/Wine.app/Contents/Resources/bin/wine'
alias simion='wine "/Users/hpek/.wine/drive_c/Program Files/SIMION 8.0/simion.exe"'
alias inkscape='wine "/Users/hpek/.wine/drive_c/Program Files/Inkscape/inkscape.exe"'

나는 이것이 올바른 방법이라고 생각하지 않습니다. 별칭은 bash 스크립트 내에서 작동하지 않으며 또는 brew를 통해 무언가를 설치할 때 apt-get이와 같은 별칭을 생성하지 않습니다.

이를 수행하는 올바른 방법은 무엇입니까?

답변1

별칭은 설계상 쉘 스크립트에서 작동하지 않습니다. 그렇지 않으면 예를 들어 alias rm='rm -i'대부분의 쉘 스크립트가 중단됩니다.

어쨌든 활성화하려면 expand_aliases쉘 옵션을 설정하십시오.


다음 디렉터리에 이러한 실행 파일에 대한 소프트링크를 생성할 수 있습니다 $PATH.

ln -s /Applications/Aquamacs.app/Contents/MacOS/Aquamacs /usr/bin/aquamacs

그런 다음 새 명령 이름(예: aquamacs)을 입력하여 실행하세요.

이렇게 하면 쉘과 독립적으로 이러한 명령을 사용할 수 있습니다.


일반 OS X 응용 프로그램의 경우 이를 여는 비차단 방법은 예를 들어 open -a ProgramName입니다 open -a Aquamacs. Launch Services의 프로그램 데이터베이스(예: 기본이 아닌 편집기로 특정 파일을 열기 위한 프로그램 선택 제공)를 사용하고 응용 프로그램이 설치된 위치를 알고 있습니다.

답변2

이것이 올바른 방법입니다. 단지 달성하려는 목표와 "그것"의 가치가 다르기 때문입니다. (별칭은 대화식 사용을 위한 것입니다.)

Mac에서 App Bundle을 여는 방법은 을 사용하는 open -a ${appname}것이므로 emacs 별칭을 로 바꾸고 alias emacs='open -a aquamacs'inkscape를 open -a wine '/Users/hpek/.wine/...'.

그러나 직접 실행 가능한 바이너리를 갖는 방법은 emacs문자 그대로 $PATH. 나는 작은 스크립트를 선호하는 경향이 있습니다.

#!/bin/sh
exec /usr/bin/open -a octave "$@"

이는 "mac" 방식으로 응용 프로그램을 열고 모든 명령줄 인수를 이를 통해 전달하며 다른 프로세스를 포함한 모든 것에서 실행 가능합니다.

하지만 쉘에만 관심이 있다면 쉘 함수는 bash에서 더 많은 상황에서 트리거될 수 있다는 점에서 별칭보다 "정상"입니다.

function octave() { /Applications/Octave.app/.../bin/octave "$@"; }
function octave() { open -a octave "$@"; }

답변3

간단한 해결책은 다음 명령을 추가하는 것입니다 .bash_profile.

alias rstudio='open -a /Applications/RStudio.app/Contents/MacOS/RStudio "$@"'

.R이렇게 하면 RStudio 프로그램이 명령에 전달된 기존 파일을 열 수 있습니다.

답변4

python3.6폴더 내부에 호출되는 실행 파일이 있다고 가정해 보겠습니다 .

/Users/doekewartena/.pyenv/versions/3.6.0/bin/

그러면 다음과 같이 할 수 있습니다.

alias python36='/Users/doekewartena/.pyenv/versions/3.6.0/bin/./python3.6'

/./마지막에 공지하세요 .

관련 정보