우분투 데스크탑을 두 번 클릭하여 파일을 열 때 작업 디렉토리를 변경하는 방법은 무엇입니까?


10

두 번 클릭하여 파일 (.pdb 파일 : 단백질 구조 형식, 신경 쓰지 않음)을 열었습니다.

"open with"는 Ubuntu Tweak을 사용하여 "pymol"(. pdb 형식을 여는 프로그램)을 실행하도록 수동으로 지정됩니다.

그러나 작업 디렉토리$ HOME 이라는 것을 알았습니다 .

내가 연 디렉토리의 다른 파일은 파일을 여는 것이 중요하므로 액세스하고 싶습니다.

"pymol"은 $ HOME에서 실행되는 반면 "pdb 파일"(두 번 클릭 된 파일)의 절대 경로는 인수로 전달됩니다.

나는 이것이 다소 일반적인 문제라고 생각하고 질문한다.

시스템이 "작업 디렉토리""파일을 클릭 한 디렉토리" 로 변경하고 프로그램을 실행하도록하려면 어떻게해야합니까?

답변:


16

몇 년이 지난 지금, 나를 위해 일한 것은 다음과 같습니다.

Exec=bash -c 'cd "%k" && ~/path/to/your/file'

% k 는 방금 시작한 실행기의 디렉토리 경로를 제공합니다.


1
% k는 작동하지 않았지만 (또는 % d) bash -c 부분이 필요했습니다
Marc Van Daele

1
간접적으로 도울 수있어서 다행입니다. ~올바르게 정의하려면 bash -c 부분이 필요 합니다. 직접 / home / marc 경로를 사용하는 경우 bash -c가 필요하지 않습니다.
TuxForLife

1
bash -c가 작업을 완료했습니다. 많은 도움이되었습니다 :)
Muthu

2
% k는 데스크톱 파일을 포함한 전체 경로로 확인되므로 cd "%k"작동하지 않습니다. 하지만 당신은 사용할 수 있습니다 cd "$(dirname %k)".
ivant

혼란 스럽습니다. 왜 "% k"를 사용하여 디렉토리에 들어가면 바로 다음 명령이 관련 명령을 &&실행 ~합니까?
vdegenne

5

위의 해결책 중 어느 것도 내 데비안에서 작동하지 않았습니다. 또한 %d더 이상 사용되지 않습니다. 데스크탑 엔트리 사양을 참조하십시오 .

그래서 다음 bash 스크립트를 사용하여 pymol을 실행하고 있습니다. 먼저 다음 bash 스크립트 파일을 작성하고에 저장해야합니다 /usr/local/bin/run_pymol.sh. HOME 디렉토리 등이 무엇인지 이해하지 못하는 /usr/local것 같아서 파일을 저장 xdg-open했습니다.

#!/usr/bin/env bash
# change working directory
cd `dirname $1`
# run pymol
/usr/bin/env pymol $@

둘째, 해당 파일에 대한 실행 권한을 부여하십시오. 터미널을 열고 다음 명령을 입력하여 권한을 부여하고 확인하십시오.

% chmod +x /usr/local/bin/run_pymol.sh
% run_pymol.sh

마지막으로 pymol.desktop파일을 다음과 같이 수정 하면 pymol이 첫 번째 파일이있는 디렉토리에서 시작됩니다.

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=PyMOL Molecular Graphics System
GenericName=Molecular Modeller
Comment=Model molecular structures and produce high-quality images of them
Type=Application
Exec=/usr/local/bin/run_pymol.sh %U
TryExec=pymol
Icon=pymol
MimeType=chemical/x-pdb
Categories=Education;Science;Chemistry;

그것이 당신을 도울 수 있기를 바랍니다 :-)


3
나는 넣을 수 있었고 Path=/my/path잘 작동했습니다. Path - If entry is of type Application, the working directory to run the program in.
Ripster

2

나는 왜 거기의 솔루션이 그렇게 공감했는지 이해하지 못합니다. 절대적으로 다른 일을합니다. 작업 디렉토리를 .desktop 파일이있는 디렉토리로 변경하고 질문은 작업 디렉토리를 열린 파일이있는 디렉토리로 변경하려고했습니다.

내 해결책 :

Exec=/bin/bash -c 'cd $(dirname $0) && micro $0'

.desktop 파일에 대한 env 변수 설정은 서로 다릅니다.

Exec=env CPATH=../include /bin/bash -c 'cd $(dirname $0) && micro $0'

0

특정 파일 형식을 열 때마다 호출되는 항목을 /usr/share/applications찾아서 찾을 수 있습니다 file.desktop. 그런 다음 편집하여 execcd PATH &&의 시작 부분에 추가하십시오 .


-1

확인 -

Exec=cd PATH &&  <application-name> %F

PATH가 % F의 경로를 가리 키도록 정의되지 않았기 때문에 나를 위해 작동하지 않았습니다. 모든 응용 프로그램 데스크탑 파일에서 사용 가능한 유일한 변수는 다음과 같습니다.

  • % fa 단일 파일 이름.
  • 여러 파일 이름 % F
  • % ua 단일 URL.
  • % U 여러 개의 URL.
  • % da 단일 디렉토리. 파일을 찾기 위해 % f와 함께 사용됩니다.
  • 다중 디렉토리 % D 파일을 찾기 위해 % F와 함께 사용됩니다.
  • 경로없는 단일 파일 이름 % na.
  • 경로없는 여러 파일 이름 % N
  • % ka URI 또는 ​​데스크탑 파일 위치의 로컬 파일 이름.
  • % v 장치 항목의 이름입니다.

% d는 여러 디렉토리로 변경하는 것이 의미가 없으므로 찾고있는 단일 디렉토리입니다. 따라서 / usr / share / applications로 이동하여 application-name.desktop 파일을 편집하십시오 (귀하의 경우 pymol.desktop). 그렇게하려면 수퍼 유저 권한이 있어야합니다. 그런 다음 "Exec ="로 시작하는 줄을 찾으십시오. 아마 읽습니다

Exec=<application-name> %F

(귀하의 경우 Exec = pymol % F). 이 줄을

Exec=cd %d && <application-name> %F

해당 데스크탑 파일을 저장하고 다음에 .pdb 파일을 클릭하면 작업 디렉토리가이 .pdb 파일이있는 디렉토리 여야하므로 pymol은 모든 파일을 볼 수 있습니다.

물론 파일이있는 디렉토리로 먼저 이동 한 후 명령 줄에서 pymol을 시작할 수도 있지만 GUI 솔루션을 원했기 때문에 약간의 편집을 수행해야합니다 :-)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.