exec 접두사가 붙지 않은 경우 startx 함수/별칭의 매개변수가 잘못된 것입니다.

exec 접두사가 붙지 않은 경우 startx 함수/별칭의 매개변수가 잘못된 것입니다.

맥락상 내 파일/디렉토리 구조와 내용은 대부분 Luke Smith의 도트 파일(빈밥). 또한 코드 블록의 "..." 줄은 코드가 아니며 파일에서 생략된 줄을 나타냅니다.

내 거 ~/.zprofile:

#!/bin/zsh
...
export XINITRC="${XDG_CONFIG_HOME:-$HOME/.config}/x11/xinitrc"

이것은 내 별칭 파일 ~/.zshrc소스( ~/.config/shell/aliasrc)에 있습니다.

#!/bin/bash
...
esx() { exec startx "$XINITRC" "$@" -- -keeptty >~/xorg.log 2>&1; }
sx() { startx "$XINITRC" "$@" -- -keeptty >~/xorg.log 2>&1; }

(함수 명령의 "--" 부분은 다음과 같은 용도로 사용됩니다.기록)

다음과 같습니다 ~/.config/x11/xinitrc.

#!/bin/sh
sysresources="/etc/X11/xinit/.Xresources"
userXprofile="${XDG_CONFIG_HOME:-$HOME/.config}/x11/xprofile" # empty file atm
[ -f "$sysresources" ] && xrdb -merge "$sysresources"
xrdb -merge ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources & xrdbpid=$!
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
 for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
  [ -x "$f" ] && . "$f"
 done
 unset f
fi
if [ -f "$userXprofile" ]; then
    . "$userXprofile"
else
    . "$HOME/.xprofile"
fi
[ -n "$xrdbpid" ] && wait "$xrdbpid"
case $1 in
   awesome|awesomeWM) exec awesome;;
   xfce|xfce4) exec startxfce4;;
   openbox) exec openbox;;
esac

기본적으로 목표는 특정 세션에 사용하려는 창 관리자 또는 데스크탑 환경의 이름을 실행하거나 사용하는 것입니다 esx. sx잘 작동 esx하지만 sx$XINITRC 값을 ~/.config/x11/xinitrc내가 선택한 WM/DE 대신 $1로 전달합니다. sx첫 번째 매개변수를 제외하여 "수정"을 시도했습니다 .

sx() { startx "$XINITRC" "${@:2}" -- -keeptty >~/xorg.log 2>&1; }

그러나 xinitrc는 여전히 $1을 $XINITRC로 가지고 있습니다. 임시 수정으로 ~/.config/x11/xinitrc"$XINITRC"인 경우 첫 번째 위치 매개변수를 제거합니다.

[ "$1" = "$XINITRC" ] && shift
case $1 in
...

sx그러나 나는 이 해결책이 싫고 왜 그것이 엉망인지 알고 싶습니다 . 왜 이런 일이 일어나는지 아는 사람이 있나요?

관련 정보