Сделать ссылку открытой целевой файл, а не файл в месте ссылки
Извините за теги. Я не знаю, к кому это относится. Пожалуйста, удалите не относящиеся к нему, затем удалите эту строку. Или прокомментируй, и я сделаю это сам.
Фон
Я хочу поставить ссылку на файл, расположенный в /home/myname/some/path/file.tex
на моем рабочем столе. Этот файл TeX вызывает другие файлы TeX внутри него. Теперь, когда я открываю ссылку, которая находится на рабочем столе, в моем редакторе TeX, он говорит, что я открыл файл /home/myname/Desktop/file.tex
, Я не могу скомпилировать этот файл, потому что другие файлы TeX, на которые опирается основной файл TeX, расположены не там, где их ожидает программа.
Главный вопрос
Как сделать так, чтобы файл ссылки открывал целевой файл в его текущем местоположении, а не на рабочем столе?
РЕДАКТИРОВАТЬ
Раскрытое здесь решение не работает так, как задумано. С
#!/bin/bash
exec /home/myname/some/path/file.tex "$@"
я получил
/tmp/geany_run_script_JVX1HZ.sh: 7: /tmp/geany_run_script_JVX1HZ.sh: ./open-file.sh: Permission denied
—----------------
(program exited with code: 126)
Press return to continue
куда open-file.sh
это скрипт-обертка на моем рабочем столе
РЕДАКТИРОВАТЬ 2
Хотя, если я открою терминал и сделаю
chmod a+x ./open-file.sh
и изменить exec
в texstudio
Кстати, это программа, которую я использую, чтобы открыть .tex
файлы, то я могу открыть терминал и сделать
bash open-file.sh
он запустит TeXStudio с нужным файлом, загруженным в нужное целевое местоположение. Я все еще не могу просто дважды щелкнуть open-file.sh на своем рабочем столе, так как это откроет мой текстовый редактор, позволяя мне редактировать скрипт bash. Я хочу дважды щелкнуть open-file.sh
файл сценария и TeXStudio открыть мой file.tex
файл.
### РЕДАКТИРОВАТЬ 3
Из этого вопроса я делаю вывод, что все сделал правильно, и файл должен быть кликабельным и выполняться при клике. К сожалению, это не так. Я думаю, что мои разрешения верны, афаик
и то же самое здесь
-rwxr-xr-x me me 94 Apr 27 12:00 open-file
1 ответ
Это связано с семантикой символических ссылок. Хотя вы не можете изменить способ обработки символических ссылок, вместо этого вы можете использовать настольный файл типа Link.
Сделайте текстовый файл в
~/Desktop
называется например
file.tex.desktop
с этим содержанием:
[Desktop Entry]
Name=file.tex
Type=Link
URL=file:///home/myname/some/path/file.tex
Это откроет путь
/home/myname/some/path/file.tex
с текстовым редактором по умолчанию в рабочем каталоге
/home/myname/some/path/
независимо от расположения файла рабочего стола.
Вам нужно будет отрегулировать
Name
а также
URL
значения должны быть подходящими, но все остальное может остаться прежним. Вот реальный рабочий пример:
[Desktop Entry]
Name=Link to utf8test.tex
Type=Link
URL=file:///usr/share/texlive/texmf-dist/tex/latex/base/utf8test.tex
Обратите внимание, что URL-адрес должен быть правильным file://
URL. Некоторые файловые менеджеры помогут вам создать эти файлы, если вы не хотите делать это вручную.
Связанный:
Я не знаю, как сделать так, чтобы сама ссылка работала, но есть относительно простой способ сделать это.
Похоже, проблема в том, что программа, запущенная для обработки ваших данных, не работает с рабочим каталогом, в котором указано местоположение файла данных.
Вместо того, чтобы связывать сам файл, напишите скрипт запуска и передайте ему местоположение файла в качестве параметра. Затем, ссылка на скрипт из вашей записи на рабочем столе.
По крайней мере, в KDE это проще сделать, добавив запись в Application Launcher со всеми параметрами, установленными так, как вы хотите, а затем перетащив запись из меню на рабочий стол. Он имеет кучу переменных-заполнителей, которые позволяют вам изменять команду и даже позволяют указать рабочий каталог для использования.
Это может быть просто или причудливо. Начните с простого:
#!/bin/bash
## Usage: launcheroo working-directory data-file
## defending this script is left as an exercise for the reader
## ... or you can ask in the comments ;)
cd "$1"
myprog "$2" ## or your more fancy exec that will figure out
## what program to run by itself
вызывается как:
launcheroo path-to-data-files data-file
Это обрабатывает самое основное использование и иллюстрирует подход, но не обрабатывает никаких ошибок, таких как плохие или отсутствующие параметры
Чтобы получить немного больше, вы можете извлечь путь из указанного пути к файлу данных, используя dirname
или редактирование параметра bash вместо передачи его в качестве отдельного параметра.
Быстрый и грязный способ сделать это - особенно для тестирования, как это работает - было бы просто отредактировать значок на рабочем столе для запуска
cd where-the-files-are ; exec ...
Поскольку это Linux, вероятно, есть много других способов сделать это.
Если вы добавите файл в виде значка на рабочем столе, вы можете напрямую отредактировать его файл.desktop и заставить его делать всякие интересные вещи. Я не много сделал с ними.
Только что увидел этот ответ, который по сути такой же, как и у меня, но немного отличается от него.