gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:29 25 4
gpt4 key购买 nike

我是 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

它成功了!

最佳答案

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

关于linux - 执行相对于另一个用户的主目录的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50779050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com