~/.bashrc 기능을 GUI 로그인 항목으로 실행하는 방법

~/.bashrc 기능을 GUI 로그인 항목으로 실행하는 방법

저는 Debian Stretch와 Xfce를 사용하고 있습니다. 내 ~/bin디렉토리에는 많은 스크립트가 있습니다. 이것은 물론 내 파일입니다 $PATH. 때로는 세션 및 시작 > 응용 프로그램 자동 시작을 통해 Xfce에 로그인할 때 거기에서 스크립트를 실행합니다. 내 ~/.bashrc파일에는 사용자 정의 별칭과 함수가 있습니다. 더 짧은 코드를 작성하기 위해 파일의 함수를 사용하고 ~/.bashrc있는데 이에 대한 전체 스크립트를 만들고 싶지 않습니다 ~/bin. 그러나 때로는 내 파일의 ~/.bashrc기능을 GUI 로그인 항목으로 실행 하고 싶을 때가 있습니다.

에서 테스트 기능을 만들었습니다 ~/.bashrc. 그런 다음 에서 실행되도록 함수를 설정했습니다 ~/.profile. 다음을 수행하면 함수가 성공적으로 실행됩니다. - bash -l터미널에서 실행 - tty 세션에 로그인

그런데 LightDM에서 그래픽 Xfce 환경에 로그인하면 실행되지 않습니다. 이 기능은 Xfce의 세션 및 시작 > 응용 프로그램 자동 시작에 추가된 경우에도 실행되지 않습니다. 추가 테스트를 위해 직접 실행했습니다 ~/.profile. Xfce에 로그인했을 때 실행되었습니다.

~/.bashrc그래픽 환경에 로그인되어 있는 동안에는 함수를 실행할 수 없습니다. 이것은 버그입니까? GUI 로그인 시 기능을 실행하려면 설정을 활성화해야 합니까? 아니면 이것이 내 시스템이 설계된 방식입니까? 감사해요

답변1

기본 ~/.profile소스가 비어 있지 않은 경우에만, 즉 (기본값에서):~/.bashrcBASH_VERSION.profile

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

Lightdm에서 시작 스크립트는 에 의해 실행되고 /bin/shDebian에서는 심볼릭 링크입니다./bin/dash. 이는 ~/.profile시작 시 BASH_VERSION비어 있으므로 ~/.bashrc가져오지 않음을 의미합니다.

가능한 해결책

  1. 실행 기능~/bin

  2. 또 다른 해결책(시작 시 여러 솔루션이 필요한 경우)은 모든 기능을 저장하는 위치를 알려주는 별도의 파일을 갖고 ~/.startup_functions 거기에서 파일을 가져와 .profile거기에서 기능을 실행하는 것입니다. 를 사용하여 실행하므로 /bin/dash호환성을 확인해야 합니다.

그렇지 않고 시작 시 bash시작 쉘 및 소스로 사용 하려는 경우 .bashrc할 수 있는 한 가지는 bashdefault 로 설정하는 것입니다 /bin/sh. 즉, 다음을 실행하십시오.

$ dpkg-reconfigure dash 

그리고 지시를 따르세요.

에서 함수를 정의하고 시작 시 실행하려면 .bashrc대화형인 경우에만 쉘이 로드된다는 점에 유의하십시오. .profile기본적으로 다음 테스트가 있는 경우.bashrc.bashrc

# If not running interactively, don't do anything
case $- in
    *i*) ;;
    *) return;;
esac

이는 이 테스트를 제거하거나 이전에 필요했던 기능을 정의해야 함을 의미합니다. 어쨌든 저는 ~/bin.

관련 정보