.profile/.bashrc에서 기능 내보내기

.profile/.bashrc에서 기능 내보내기

내가 뭘 잘못했나...? 명령줄에서 이 작업을 수행하면 호출하지만 .profile에서 로드할 때는 호출하지 않습니다. Linux Mint Qiana, Bash 4.*(중요한 경우).

function android() { command /opt/android-studio/bin/studio.sh "$@" & disown ; }

export -f android

명령을 짧게 하고, 명령을 확장하고, 세미콜론을 제거하고, 줄 바꿈을 사용해 보았습니다. 아직 만족스러운 타협점을 찾지 못한 것 같습니다. 명령줄에서 실행할 때 오류가 없으며 함수는 현재 위에 나열된 대로 작동합니다.

참고: "로드"란 내가 편집 중인 .profile의 동일한 사용자로 새 터미널 세션을 여는 것을 의미합니다. 그리고 저는 이 함수의 간단한 버전으로 시작하기 때문에 function과 같은 것을 사용하고 있습니다. 작동하지 않아서 올바른 조합을 얻기 위해 항목을 추가하고 제거하기 시작했습니다. 명령줄에서는 모든 것이 잘 작동합니다. commanddisown

답변1

Ubuntu와 Linux Mint에서는 기본 방법을 포함하여 GUI 세션을 시작하는 대부분의 방법을 bash /etc/profile가 아닌 bash에서 읽습니다. dash는 bash보다 더 빠르고 메모리를 적게 사용하는 셸이지만 함수 내보내기와 같은 일부 기능이 부족합니다. 와 같은 내용을 포함해야 합니다 .~/.profile/bin/sh/bin/sh~/.xsession-errors.profile: 42: export: Illegal option -f

환경에 함수를 넣지 말고 대화형 셸의 초기화 파일인 에서 정의하세요 ~/.bashrc. 모든 대화형 쉘은 파일을 읽고 비대화형 쉘은 대부분 bash가 아닌 sh이기 때문에 이를 내보낼 필요가 없습니다. 따라서 disown비대화형 쉘에서는 전혀 사용되지 않는 함수를 가져오지 않습니다.

답변2

~/.bashrc전통적으로 bash 함수는 대화형 bash에서 읽는 위치에 배치됩니다 . ~/.profile로그인한 bash에서만 읽을 수 있습니다. 새 창은 일반적으로 로그인 bash를 실행하지 않습니다.

관련 정보