로그아웃했다가 다시 로그인한 후에는 터미널에서 .profile에 기능을 추가할 수 없습니다.

로그아웃했다가 다시 로그인한 후에는 터미널에서 .profile에 기능을 추가할 수 없습니다.

그래서 내 .profile모습은 다음과 같습니다.

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

if [ -f "$HOME/.local/share/profile" ]; then
    . "$HOME/.local/share/profile"
fi


# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
export VISUAL=nano
export EDITOR="$VISUAL"
stty -ixon

function test-func {
        echo test-func
}

alias test-alias='echo test-alias'

Gnome(Fedora 35)에 로그인하고 터미널 에뮬레이터를 열면 기능을 실행할 수 없습니다 test-func.

$ test-func
bash: test-func: command not found

하지만 함수를 .bashrc파일에 넣고 로그아웃했다가 다시 로그인 하면 test-func함수를 실행할 수 있습니다.

.profile추가된 기능을 환경에서 사용할 수 없는 이유가 있나요?

편집: 그래서 그래픽이 아닌 로그인(Ctrl + Alt + F3 트릭 사용)을 사용하여 로그인하면 이 test-func기능을 사용할 수 있다는 것을 알았습니다. Gnome이 .profile비로그인 쉘에서 기능을 제공 하지 않는 이유가 있습니까?

func-name () { ... }편집 2: 함수에 ( 대신 ) POSIX 호환 구문을 사용해도 function func-name { ... }효과가 없다는 점도 확인했습니다.

답변1

이것은 아마도 코멘트에 가깝지만 평판이 충분하지 않기 때문에 내가 얻은 것은 다음과 같습니다.

  • 이 문제는 특별히 Gnome과 관련이 없습니다. 저는 KDE를 사용하고 있는데 이 문제도 발생했습니다.
  • 에 함수를 넣으면 ~/.bash_profile사용할 수 있게 됩니다. 같은 것을 확인해주실 수 있나요? 만약 이런 일이 당신에게도 일어난다면, 또 다른 단서를 얻을 수 있습니다: Fedora는 비로그인 쉘을 다르게 처리합니다 ~/.profile.~/.bash_profile

실제로 로그인 쉘 측면에서 다르게 처리 ~/.profile합니다 .~/.bash_profile~/.bash_profile수동설명하다). 이를 실행 하여 GUI 세션을 초기화하고 스크립트 소스가 Fedora에만 존재하는 것으로 나타나는지 journalctl확인할 수 있습니다 ./etc/X11/xinit/XsessionXsession/etc/X11/xinit/xinitrc-common~/.profile

내 2센트.

관련 정보