맥락상 내 파일/디렉토리 구조와 내용은 대부분 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
그러나 나는 이 해결책이 싫고 왜 그것이 엉망인지 알고 싶습니다 . 왜 이런 일이 일어나는지 아는 사람이 있나요?