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上设置了执行标志,则会执行此操作。