我是Linux脚本的初学者。不知何故,我找不到正确的搜索字符串来找到答案。
我想运行一个与特定用户目录相关的脚本,如下所示:
~user/rel/path/to/script.sh
但我不知道"~user“会翻译成什么。它甚至可能包含空格。我应该引用它吗?如果是这样,又是如何做到的呢?当我尝试使用引号时,我总是得到文件或文件夹不存在的错误。
编辑
我想这不是复制品。
我担心的是用引号运行以下代码:
"~user/rel/path/to/script.sh“
出现“找不到文件或文件夹”错误。但我不知道~user会翻译成什么。(该脚本将在许多不同的计算机上调用。用户名是给定的,但主目录可以由每台计算机的所有者自由更改。)所以我很害怕(作为一个Linux脚本初学者!)要运行它而不使用引号,例如:
~user/rel/path/to/script.sh
被否决最多的答案(Java system properties and environment variables)实际上对我帮助最大。我只需要确认它在Linux上是否以同样的方式工作。因此,我在VirtualBox中安装了一个测试虚拟机,并尝试:
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
它成功了!
发布于 2018-06-10 07:30:55
在Mac OS上,你不需要引用。我对Linux不是很确定。但是,如果
ls ~user
将导致/dir带有空格/user/然后
sh ~user/rel/path/to/script.sh
将会是
sh /dir\ with\ space/user/rel/path/to/script.sh
如果您相应地在script.sh上设置了execution标志,则会执行此操作。
https://stackoverflow.com/questions/50779050
复制相似问题