LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: terree

自动运行fcitx的问题

[复制链接]
发表于 2009-10-7 19:14:21 | 显示全部楼层
这个帖子谁来解决一下??
回复 支持 反对

使用道具 举报

发表于 2009-10-7 22:25:42 | 显示全部楼层
1、首帖中的问题,应该看下家目录的 ~/.bashrc 脚本,大概是直接或间接执行了 /etc/profile。因为通常启动 X 后开启的 terminal 为 non-login shell。
2、holz 的方法可行,大概是因为 dropline gnome 登陆时执行了 ~/.profile 文件,以便更新系统环境,但我并不确定,没用过 dropline。后面 terree 说每开启一个 terminal 不会重复执行 ~/.profile 文件,这是正常的,了解一下 login shell 和 non-login shell 就明白了,请自行 google。
3、启动 fcitx 或诸如此类的程序,我建议放到家目录的 WM/DE 自启动项中,gnome 在会话里;比如我用 fluxbox,自然有 startup 脚本文件;kde 有 autostart 文件夹等。profile 通常用来更新环境变量,而不是启动应用程序。
4、~/.xinitrc 文件,如果用 startx 命令启动 Xserver,它肯定会被执行的,我记得以前有人讨论过 gdm 不读取 ~/.xinitrc 的问题。不确定。
回复 支持 反对

使用道具 举报

发表于 2009-10-7 22:55:56 | 显示全部楼层
现在都是 slackware13 了吧~ 如果用的是 Konsole,并且没有修改过 /usr/share/applications/kde4/konsole.desktop,那么 konsole 启动的就是 login shell(里面 Exec 一项是 Exec=konsole -e $SHELL -l,这是 PatV 自己打补丁设置成这样的…… 我发过邮件建议不要改,但是没有回应……),这样就会运行那些 profile 的脚本~

最好的办法其实是把 fcitx.desktop 复制一份到 ~/.config/autostart/ 下面,这样符合 xdg 标准的桌面环境都可以自动启动 fcitx~
回复 支持 反对

使用道具 举报

发表于 2009-10-8 08:34:22 | 显示全部楼层
我一般把脚本放到.bash_profilel里,然后在.bashrc里source一下 .bash_profile。
这样只要改一个就好。
回复 支持 反对

使用道具 举报

发表于 2009-10-9 00:24:35 | 显示全部楼层
呃,楼上似乎顺序错了

一般是先首先执行 .bash_profile,再由.bash_profile 调用 /etc/profile 和 .bashrc,然后 .bashrc 再调用 /etc/bashrc。具体可以去查查看/etc/skel里面的默认文件,因为这顺序完全由配置文件决定,与系统无关。不过肯定是先.bash_profile啦
回复 支持 反对

使用道具 举报

发表于 2009-10-9 06:27:43 | 显示全部楼层
man bash
  1.       When  bash is invoked as an interactive login shell, or as a non-inter‐
  2.        active shell with the --login option, it first reads and executes  com‐
  3.        mands  from  the file /etc/profile, if that file exists.  After reading
  4.        that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,
  5.        in  that order, and reads and executes commands from the first one that
  6.        exists and is readable.  The --noprofile option may be  used  when  the
  7.        shell is started to inhibit this behavior.
  8.        When  a  login  shell  exits, bash reads and executes commands from the
  9.        file ~/.bash_logout, if it exists.
  10.        When an interactive shell that is not a login shell  is  started,  bash
  11.        reads  and executes commands from ~/.bashrc, if that file exists.  This
  12.        may be inhibited by using the --norc option.  The --rcfile file  option
  13.        will  force  bash  to  read  and  execute commands from file instead of
  14.        ~/.bashrc.
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表