Xfce4 panel Lanch要注意的地方

对于经常开机后要执行的命令,我一直都是手打。
(这些命令大多是开机只运行一次,但因为一些原因我不想或者不能添加到 /etc/rc.local 中)

最近将两个常用命令添加到了 Xfce4 panel Lanch 中,这样只要点击一下鼠标就好。

比如我现在添加的两个:

screenshot
  1. 外接显示器扩展用的。 就是个 xrandr 命令
  2. 代理用的。是我自己用erlang实现的socks5代理。

代理的启动脚本是这么写的:

#! /bin/bash

SELF=`readlink -f "$0"`
WORKDIR=`dirname "$SELF"`

cd "$WORKDIR"


running=`ps -ef | grep make_proxy_client | wc -l`
if [[ running -eq 2 ]]
then
    exit 0
else
    erl -pa common -pa client/ebin -config client +K true -eval "application:start(make_proxy_client)." -noshell -detached
fi

exit 0

测试发现 第一个 能正常工作,第二个却不行。
但自己手动在terminal中执行这个脚本,却可以工作。

百思不得骑姐后,google一番,发现 这里 有这样一句话:

When you launch the terminal with a command, ~/.bashrc doesn't get executed. This means that any changes to the environment you put there (PATH, CLASSPATH, JAVA_HOME) won't be carried over to the script.

于是想到 erl 我是安装在 /opt/erlang 中的,非标准路径,我自己在 .bashrc 中添加了 PATH , 所以自己在terminal中运行没有问题,能找到 erl, 但 panel Lanch 没有加载自定义的PATH,所以找不的erl,无法运行。

然后赶紧做了个实验,很简单,就是写一个脚本

#!/bin/bash
echo $PATH > /tmp/path

在terminal中运行,输出PATH正常,在Lanch中运行,输出并没有自己添加的PATH。

明白问题所在后,只要将 那么启动脚本中的 erl 替换成完整路径即可。 我计算机中是 /opt/erlang/bin/erl

最后大功告成。解决问题。

你可能感兴趣的:(Xfce4 panel Lanch要注意的地方)