我是Linux脚本编程的初学者。不知怎的,我无法找到正确的搜索字符串来找到答案。
我想运行一个相对于特定用户目录的脚本,如:
〜用户/相对/路径/到/ script.sh
但我不知道"〜用户"将转化为。它甚至可能包含空格。我应该引用它吗?如果是这样,怎么样?当我尝试使用引号时,我总是得到文件或文件夹不存在错误。
我认为这不是重复。
我担心的是用引号运行以下内容:
"〜用户/相对/路径/到/ script.sh"
给我"找不到文件或文件夹"错误。但我不知道,用户将转化为什么。 (该脚本将在许多不同的计算机上调用。给出了用户名,但每个计算机的所有者可以自由更改主目录。)所以我害怕(作为Linux脚本BEGINNER !!!)运行它没有引号像:
〜用户/相对/路径/到/ script.sh
最低调的答案(由Cpt_Jauchefuerst提供)实际上对我帮助最大。我只需要确认它在Linux上的工作方式是否相同。所以我在VirtualBox中安装了一个测试VM并尝试:
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
感谢Cpt_Jauchefuerst!
答案 0 :(得分:-1)
在Mac OS上,您不需要引用。我不确定Linux。但是,如果
ls ~user
将导致/ dir with space / user / then
sh ~user/rel/path/to/script.sh
将是
sh /dir\ with\ space/user/rel/path/to/script.sh
如果你在script.sh上相应地设置了执行标志,那么就会执行。