如何在 systemd 服务中将 bash 作为交互式 shell 运行?

问题描述 投票:0回答:1

systemd 服务启动如下:

ExecStart=/bin/bash -c ". ~/.bashrc; mycommand"

因为我需要对我的

~/.bashrc
中的 PATH 环境变量进行修改,并且不想对它们进行硬编码。这不起作用,因为我的
~/.bashrc
开头有一个片段:

# If not running interactively, don't do anything
case $- in
  *i*) ;;
  *) return;;
esac

解决方案似乎是让我的服务以交互方式运行,因此我将

-i
标志添加到
ExecStart
命令,但随后我得到以下输出:

bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell

我该如何解决这个问题?或者有更好的方法来做我想做的事吗?

bash ubuntu systemd
1个回答
0
投票

考虑到

.bashrc
通常用于交互式 shell,为什么你的
.bashrc
中有该片段?考虑删除它。

无论如何,您可以使用

-i
标志将 bash 作为交互式 shell 启动:

ExecStart=/bin/bash -i -c "mycommand"
© www.soinside.com 2019 - 2024. All rights reserved.