Shairport on-start命令有多个单词

时间:2014-11-18 18:55:40

标签: bash

我尝试将Shairport设置为在用户连接时运行脚本,而在用户再次断开连接时尝试运行另一个脚本。

我尝试添加on-start和on-stop参数。这在手动启动Shairport时工作正常。

但我不知道如何在/etc/init.d/shairport中添加这些参数。

我试过了:

START="python script1.py"
STOP="python script2.py"
DAEMON_ARGS="--daemon --pidfile $PIDFILE --log $LOGFILE --on-start=\"$START\" --on-stop \"$STOP\""

但是这会导致错误消息:

  

音频参数无效:script1.py"

我认为问题在于该命令由两个单词组成,但我不知道如何解决问题。

你能帮我吗?

1 个答案:

答案 0 :(得分:0)

实际上,您可以通过执行该文件来运行python / python3脚本。请确保包含一个hashbang,这是一个例子:

#! /usr/bin/python

print "hello" 

然后你可以这样做:

$ chmod u+x script1.py
$ script1.py
hello

但只要脚本位于$PATH中列出的目录中。请注意,python(或python3,如果您愿意)的路径不一定是/usr/bin/python,您可以使用$ which python轻松找到位置。

我知道你通过将执行封装在shell脚本中来修复它,但在我看来这似乎有点清晰。

编辑:

有关PATH变量的更详细说明。

在shell中执行脚本时,shell将在此变量中列出的目录中查找命令/脚本。只要脚本位于其中一个目录中,您的shell就会知道如何调用脚本(在内部它将使用./script_name调用它,这也是您调用任何脚本的方式)。示例输出:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

请注意,包含python的目录也列在上面的输出(/use/bin)中,因此您可以将python作为命令调用。

当您创建脚本并使其可执行时,您可以使用$ ./myscript来调用它,如果它位于/sbin中,例如您可以使用$ myscript来调用它。 / p>

如何将目录添加到路径

您可以使用简单的$ PATH="$PATH:/path/to/new/dir"命令在PATH中扩展目录列表,但这并不理想,因为每次打开shell时都必须这样做。适当的方法是在.bashrc文件中添加一行(这是一个在每个shell会话开始时执行每一行的文件)。 警告:如果此文件出现故障,您可能根本无法访问您的shell,请务必在测试新内容之前对其进行备份。

我认为最好的方法是创建一个包含所有用户编写脚本的目录(我的名字叫做〜/ bin)。话虽如此,您可以遵循以下准则:

mkdir ~/bin   # create the custom script dir
mv script1.py ~/bin   # move your script to the dir
chmod u+x ~/bin/script1.py   # make file executable
cp ~/.bashrc ~/.bashrc_bak   # backup file (to be safe)
vim +$ ~/.bashrc   # open bashrc file at the last line

现在在vim(或选择的编辑器)中将此行添加到文件:export PATH=$PATH:~/bin并保存(仅添加此行不会损坏bashrc文件)。

您现在可以调用位于〜/ bin目录中的任何可执行脚本!

更好的方法是创建一个新文件.bashrc_custom并将其包含在原始./bashrc文件中,但这不是必需的,并且会使事情变得更加复杂。

启动一个新shell并测试它,你的输出应该是这样的:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/user/bin

如果是这种情况并且一切正常,请删除备份rm -f ~/.bashrc_bak

请注意,您可以使用bashrc调整命令行,可以设置自定义命令行提示符或插入某些别名。我的例如包含一些别名:

export PATH=$PATH:~/bin
export WORKBENCH="/home/user/my/current/project"
alias clone="gnome-terminal ."
alias explore="gnome-open ."
alias pdf="gnome-open *.pdf"
alias bashrc="vim +$ ~/.bashrc"
alias wb="cd $WORKBENCH"
alias ff="firefox >/dev/null 2>&1 "

希望这会有所帮助,如果问题不明确,可以提问。