Bash 스크립트를 통해 gnome 터미널을 열고 별칭 명령을 호출하고 실행합니다.

Bash 스크립트를 통해 gnome 터미널을 열고 별칭 명령을 호출하고 실행합니다.

새 gnome 터미널 창을 열고 별칭 명령을 실행하는 bash 스크립트를 작성하려고 합니다. 별칭을 사용하는 대신 함수를 사용하는 것이 올바른 방법이라는 것을 알았습니다. 두 가지 접근 방식을 모두 시도했지만 명령이 인식되지 않는다는 오류가 발생하여 작동하지 않습니다.

이것이 내가 가진 것입니다.

#!/bin/bash

# Cluster related functions
function gateway () {
    ssh user@something -t ssh gateway
}

gnome-terminal --window-with-profile=Bash -- bash -c "gateway; bash;"

내가 얻는 오류는 다음과 같습니다.

bash: gateway: command not found

답변1

가장 간단한 해결책은 다음을 호출하기 전에 함수를 내보내는 것입니다 gnome-terminal.

export -f gateway

노트:

  • 별칭은 내보낼 수 없습니다.

  • 함수 내보내기는 이식 가능한 기능이 아닙니다. bash에서 까지 작동합니다 bash.

  • 새 항목이 이전 항목 (함수를 내보낸 경우) bash의 자손 인 경우에는 자연스럽게 작동합니다 . bash예를 들어 gnome-terminal이전 버전에서 상속받고 bash새 버전 bashgnome-terminal. 이는 이전 버전 bash이 아닌 터미널에서 실행될 때 발생합니다 gnome-terminal.

    내 테스트에서는 gnome-terminal내부에서 실행 되면 gnome-terminal(환경에 GNOME_TERMINAL_*변수가 포함됨) 새 gnome-terminal프로세스가 작업을 이미 실행 중인 프로세스에 위임 gnome-terminal하고 종료한다는 것을 나타냅니다. 새로운 환경으로의 자연적인 환경 상속은 bash발생할 수 없지만, 새로운 gnome-terminal프로세스는 명령뿐만 아니라 환경까지 전달할 만큼 충분히 똑똑합니다. 이런 식으로 bashold 내부의 new는 gnome-terminalold의 자손처럼 동작하고 bash내보낸 기능이 작동합니다. 3.28.2 로 테스트되었습니다 gnome-terminal.

관련 정보