Linux Mint LMDE5는 Debian의 파생물입니다. 데스크탑에서는 GUI를 통해 무언가를 링크할 수 있을 뿐만 아니라 더 작은 bash 코드를 저장할 수도 있는 런처 pe를 생성할 수 있습니다. 생성된 런처는 다른 폴더로 이동할 수 있습니다.
다음 .sh 파일 및 실행 프로그램의 위치:
/home/user_name/desktop/a/b/c
다음 코드를 사용하면 실행 시 bash 파일의 경로를 인쇄할 수 있습니다.
.sh 파일의 내용:
#!/bin/bash
script_path=$(dirname "$(readlink -f "$0")")"/"
echo "$script_path"
sleep 100
.sh 파일 출력:
/home/user_name/desktop/a/b/c
작동하지 않는 실행기 "솔루션":
런처 파일의 내용:
bash -c 'launcher_path=$(dirname "$(readlink -f "$0")")"/"; echo "$launcher_path"; sleep 100'
터미널 실행기의 출력:
/home/user_name/ # but that should be: /home/user_name/desktop/a/b/c
"런처"는 무엇을 의미합니까?
이것은 Linux Mint 및 LMDE에서 흔히 사용되는 .desktop 파일입니다. 이 파일은 Windows의 ".lnk" 파일과 구조 및 작업이 유사합니다.
Linux Mint GUI를 통해 "런처"를 만드는 두 가지 방법:
Launcher 콘텐츠 예시(.desktop 파일):
[Desktop Entry]
Name=test
Exec=bash -c 'xed /home/user/desktop/sample_file.txt'
Comment=
Terminal=true
Icon=cinnamon-panel-launcher
Type=Application
Name[de_DE]=Sample for a launcher file, which open a textfile, which is located on desktop.
콘크리트:
실행 프로그램의 다음 명령줄에서 적절한 수정 사항만 검색하세요.
bash -c 'launcher_path=$(dirname "$(readlink -f "$0")")"/"; echo "$launcher_path"; sleep 100'
추가 스크립트나 운영 체제 수정 사항은 찾지 않습니다.
답변1
실행 중인 스크립트가 포함된 디렉터리를 알고 싶다면 해당 을 사용하면 안 됩니다. 대신 실행 파일(일반적으로 및 )이 포함된 사용자 소유 디렉터리 bash -c
에 스크립트를 심볼릭 링크 하고 이를 파일 의 키로 사용할 수 있습니다 . Bash를 사용하고 있으므로 더 나은 대안으로 교체할 수도 있습니다 . (바라보다~/.local/bin
~/bin
Exec
.desktop
$0
${BASH_SOURCE[0]}
이것답변)
$ pwd
/home/user_name/desktop/a/b/c
$ cat mylauncher.sh
#!/bin/bash
script_path=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")/
echo "$script_path"
$ ./mylauncher.sh
/home/user_name/desktop/a/b/c/
다음에 심볼릭 링크를 추가하십시오 ~/bin
.
$ pwd
/home/user_name/desktop/a/b/c
$ mkdir -p ~/bin
$ PATH=$HOME/bin:$PATH
$ ln -rs ./mylauncher.sh ~/bin
$ cd
$ pwd
/home/user_name
$ mylauncher.sh
/home/user_name/desktop/a/b/c/
이제 Exec=mylauncher.sh
파일에서 사용할 수 있습니다 .desktop
. 일부 시스템에는 이미 파일의 ~/bin
합계 확인 기능이 포함되어 있습니다. 그렇지 않은 경우 다음을 추가할 수 있습니다.~/.local/bin
.profile
if [ -d "$HOME/bin" ]; then
PATH=$HOME/bin:$PATH
fi
if [ -d "$HOME/.local/bin" ]; then
PATH=$HOME/.local/bin:$PATH
fi
GNU는 상대 경로를 쉽게 사용할 수 있는 옵션을 ln
지원합니다 . -r
바라보다ln(1)
.
%k
또 다른 옵션은 설정 의 특수 필드를 매개변수로 사용하는 것입니다 Exec
. 이 필드는 실행 파일의 위치로 확장됩니다 .desktop
. 에 따르면 참고하시기 바랍니다.사양이는 URI 또는 경로일 수 있습니다.
[Desktop Entry]
Version=1.0
Name=Test
Exec=bash -c 'desktop_file=${1#*://}; dir=$(dirname "$(readlink -f "$desktop_file")"); echo "$dir"; sleep 1000' -- %k
Terminal=true
Type=Application
${1#*://}
URI %k
로 확장되는 경우 프로토콜 부분을 제거합니다 .file://