桌面快捷方式.desktop运行的相对路径问题

sh/bash/dash/ksh/zsh等Shell脚本
txmsuper
帖子: 11
注册时间: 2009-03-06 19:27

桌面快捷方式.desktop运行的相对路径问题

#1

帖子 txmsuper » 2023-01-12 8:32

先贴脚本:
test.sh:

代码: 全选

#!/bin/bash
cd ./..
fpath=`pwd`
echo $fpath
sleep 10000000
test.desktop:

代码: 全选

[Desktop Entry]
Encoding=UTF-8
Name=test
Exec=sh /home/txm/Desktop/test.sh
Info="test"
Terminal=true
Type=Application
StartupNotify=true
请教一下各位大佬,为何用终端在桌面运行test.sh脚本,获得的相对路径是/home/[userid],但是运行桌面快捷方式,获取的相对路径却成了/home?
testsh.png
testdesktop.png
Ubuntuinfo.png
上次由 txmsuper 在 2023-01-12 8:55,总共编辑 1 次。
txmsuper
帖子: 11
注册时间: 2009-03-06 19:27

补充一下造成的问题

#2

帖子 txmsuper » 2023-01-12 8:48

这个造成了什么问题呢?是因为我们有个项目,需要在运行时创建 “./../logs/” 文件夹,用来保存日志文件,如果直接执行启动脚本是没有问题的,因为启动脚本所在文件夹层次比较深,但是为了方便(增强用户体验),需要创建桌面快捷方式,这时如果用桌面快捷方式执行的话,相对路径“./..”就变成了“/home”,普通用户是没有“/home”文件夹写权限的,就会报权限问题,造成项目无法启动。
头像
jiandan23
帖子: 86
注册时间: 2010-12-17 22:31
系统: Mint 19.2

Re: 桌面快捷方式.desktop运行的相对路径问题

#3

帖子 jiandan23 » 2023-01-12 10:06

你直接在终端下运行时,是在./Desktop目录里运行的,所以"./.."就回到了/home/[userid]了
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 桌面快捷方式.desktop运行的相对路径问题

#4

帖子 lilydjwg » 2023-01-12 10:42

Linux 上获取程序自己的路径应该还是比较容易的,比如 shell 脚本可以用 dirname $0。
不要用相对于工作目录的路径去找你自己的文件,因为经常会找不到的。
txmsuper
帖子: 11
注册时间: 2009-03-06 19:27

Re: 桌面快捷方式.desktop运行的相对路径问题

#5

帖子 txmsuper » 2023-01-12 13:12

jiandan23 写了: 2023-01-12 10:06 你直接在终端下运行时,是在./Desktop目录里运行的,所以"./.."就回到了/home/[userid]了
是的,终端运行是没有问题的,但是为什么用桌面快捷方式运行,他就到了/home下面了呢?
txmsuper
帖子: 11
注册时间: 2009-03-06 19:27

Re: 桌面快捷方式.desktop运行的相对路径问题

#6

帖子 txmsuper » 2023-01-12 13:18

lilydjwg 写了: 2023-01-12 10:42 Linux 上获取程序自己的路径应该还是比较容易的,比如 shell 脚本可以用 dirname $0。
不要用相对于工作目录的路径去找你自己的文件,因为经常会找不到的。
是的老师,现在问题是项目我们是没有办法修改的,但是项目现在的问题就是在桌面运行快捷方式会有路径问题,这个问题的产生原因我也不太理解,为什么桌面运行快捷方式他的相对路径会变到/home,按理说应该也是/home/[userid]才对啊 :Cry
txmsuper
帖子: 11
注册时间: 2009-03-06 19:27

Re: 桌面快捷方式.desktop运行的相对路径问题

#7

帖子 txmsuper » 2023-01-12 13:42

又有新发现,在文件管理器里面右键运行desktop文件,有报错,但是相对路径是对的
也就是说,只有在桌面双击的时候,他的相对路径是有变化的
testerror.png
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 桌面快捷方式.desktop运行的相对路径问题

#8

帖子 lilydjwg » 2023-01-12 14:25

改不了的话,你就只好写个 wrapper 脚本包装一下了。先 cd 到预期的目录,再跑。
头像
jiandan23
帖子: 86
注册时间: 2010-12-17 22:31
系统: Mint 19.2

Re: 桌面快捷方式.desktop运行的相对路径问题

#9

帖子 jiandan23 » 2023-01-12 15:14

txmsuper 写了: 2023-01-12 13:12
jiandan23 写了: 2023-01-12 10:06 你直接在终端下运行时,是在./Desktop目录里运行的,所以"./.."就回到了/home/[userid]了
是的,终端运行是没有问题的,但是为什么用桌面快捷方式运行,他就到了/home下面了呢?
我刚测了下,桌面快捷方式运行,terminal的初始目录是:/home/[userid],在调用你的脚本后(cd ./..),就会变成/home

test.desktop文件不是文本文件吗,为啥不能修改?
txmsuper
帖子: 11