如何检查 bash 脚本是在流浪机器内部还是外部执行的?

sen*_*rio 4 bash vagrant

我和 Vagrant 有一个项目。有时我在主机上工作。我从客人那里工作的其他一些人。我有一个只能在Guest 内部工作的脚本。我想检查我是在 vagrant 机器内部还是外部,以避免出现错误消息。这就是我正在做的:

if ! [ -d "/home/vagrant/project-folder" ]; then
    echo 'Cannot execute current script outside the vagrant';
    exit
fi;
Run Code Online (Sandbox Code Playgroud)

除了检查文件夹是否存在,还有另一种方法可以检查我是否在流浪机器中?

Krz*_*sik 5

您可以使用传递给脚本的环境变量:

config.vm.provision "shell", path: "script.sh", env: {"IN_VAGRANT" => "true"}
Run Code Online (Sandbox Code Playgroud)

然后在脚本中:

if [-z "$IN_VAGRANT" ]; then
    echo 'Cannot execute the current script outside the vagrant';
    exit 1
fi  
Run Code Online (Sandbox Code Playgroud)

或者只是检查一下logname

if [ `logname` = "vagrant" ]; then
    echo 'Cannot execute the current script outside the vagrant';
    exit 1
fi  
Run Code Online (Sandbox Code Playgroud)