关于linux:相对于另一个用户的主目录执行脚本

Execute script relative to another user's home directory

我是Linux脚本的初学者。不知怎么的,我找不到合适的搜索字符串来找到答案。

我想运行与特定用户目录相关的脚本,如:

~用户/rel/path/to/script.sh

但我不知道"~user"会翻译成什么。它甚至可能包含空格。我应该引用它吗?如果是,怎么办?我总是得到文件或文件夹不存在的错误,当我试图使用引号。

编辑

我想这不是复制品。

我担心的是,引用以下内容:

"~用户/rel/path/to/script.sh"

出现"找不到文件或文件夹"错误。但我不知道~user会翻译成什么。(脚本将在许多不同的计算机上调用。用户名是给定的,但是主目录可以由每台计算机的所有者自由更改。)所以我担心(作为一个Linux脚本初学者!)!!!)运行时不带引号,如:

~用户/rel/path/to/script.sh

最被否决的答案(由CPT ou Jauchefuerst)实际上对我帮助最大。我只需要确认它在Linux上的工作方式是相同的。所以我在virtualbox中安装了一个测试虚拟机,并尝试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cd /
sudo mkdir -p"test home dir/myuser"
sudo adduser myuser
sudo chown myuser:myuser"test home dir/myuser"
sudo usermod -d"/test home dir/myuser" myuser
su myuser
cd ~
echo '#!/bin/bash -x
  echo"here!"
'
> test.sh
chmod +x test.sh
exit
cd /
~myuser/test.sh

它起作用了,谢谢军士长!


在Mac OS上,您不需要引用。我对Linux不太确定。然而,如果

1
ls ~user

会导致/dir和space/user/then

1
sh ~user/rel/path/to/script.sh

将是

1
sh /dir\ with\ space/user/rel/path/to/script.sh

如果您相应地在script.sh上设置了执行标志,则会执行此操作。