FISH에서 실행할 때 bash "컨텍스트" 사용자 정의

FISH에서 실행할 때 bash "컨텍스트" 사용자 정의

먼저 저는 OSX10을 사용하고 있습니다. 내 기본 셸은 BASH입니다. 터미널 에뮬레이터를 열 때 FISH 셸이 자동으로 실행되도록 (.profile 및 .bashrc를 통해) 설정했습니다. 이를 통해 FISH를 로드하기 전에 BASH에서 변수 등을 설정할 수 있습니다.

그러나 때로는 FISH 셸에서 BASH용으로 작성된 스크립트를 실행하고 싶을 때가 있습니다. 이는 FISH가 BASH와 구문적으로 호환되지 않기 때문에 필요합니다. 내 FISH에 "bash"를 입력하면 내가 연 BASH는 내 .profile/.bashrc 때문에 자동으로 다른 FISH를 엽니다. 이것은 두 번째 FISH 위에 있는 BASH에 들어가려면 맨 위에서 FISH를 종료해야 하기 때문에 모든 것을 비린내나게 만듭니다(말장난 의도).

제 질문은 BASH가 로그인 셸(.profile 실행)과 비로그인 셸(.bashrc 실행)로 로드될 수 있다는 것입니다. FISH 내에서 BASH를 실행할 때 로드하도록 설정할 수 있는 세 번째 "컨텍스트"를 추가할 수 있습니까? .bashrc 또는 .profile을 로드할 수 없으므로 이중 FISH 문제가 해결됩니다.

제 질문을 이해해 주시길 바랍니다. 답변해 주셔서 미리 감사드립니다!

답변1

fish"in"을 가리키기 시작하는 변수를 스크립트에서 설정할 수 있습니다 fish.

export IN_FISH=yes

그런 다음 그 전에 이미 설정되어 있는지 확인합니다.

if [ "${IN_FISH}" != "yes" ]; then
    export IN_FISH=yes
    fish  # replace with the command you use to start fish
fi

따라서 첫 번째 항목에는 bash설정 IN_FISH이 없으므로 설정되고 fish시작됩니다. bashFISH에서 시작 하면 IN_FISH이미 설정이 되어있어서 다시 bash는 시작하지 않 fish더라구요...

답변2

또한 다음을 삽입하여 명시적으로 BASH를 사용하도록 스크립트를 편집할 수 있다고 생각했습니다.

#!/pathtobash/

스크립트의 첫 번째 줄로

예를 들어 #!/bin/bash

아니면 명시적으로 만들어라

/pathtobash/scripttorun

예를 들어 /bin/bash/scripttorun을 호출하세요.

관련 정보