我的Google Reader分享

Friday, August 29, 2008

ipod充电图标Tip和关于Bash的以前一知半解的东西


  这段时间ipod nano听的很少,主要是歌都没换,听的都腻了。今天用来拷Arch的盘的时候拿出来用了一下,然后突然发现以前充电时的绿色的充电图标不见了,怎么弄也出不来。然后开始Google,人家说弹出ipod然后睡眠后就会显示这个图标。我这么干就直接睡过去了,ipod就关了。我一开始还以为是上次ipod从高空坠落给摔坏了,后来关掉Linux,进XP,开起ITunes发现睡眠状态下可以显示这个鸟图标。Apple对Linux一直不友好啊。

  最近不是新装了Arch嘛,然后发现自己Linux知识的不扎实开始显现了。设置Fcitx输入法的时候总是不能激活.具体设置参照的是Arch的Wiki(http://wiki.archlinux.org/index.php/Fcitx中文输入法)。最后检查locale也OK,.bashrc也写对了,但Fcitx就是不能激活。郁闷了半天,后来发现我的.bashrc里有一个alias: alias ls='ls --color=auto'。但是这个也没有起作用,才开始怀疑是.bashrc没有被source,然后发现用户目录下面没有.bash_profile,我在/etc/skel/中拷贝了一份过来,顺便cat了一下内容:[winfield@myhost ~]$ cat .bash_profile
. $HOME/.bashrc
原来在这里source了~/.bashrc了,reboot后搞定。知道问题所在之后觉得有必要了解下Bash是怎么加载这几个配置文件了。man bash吧。然后看manpage的INVOCATION。
  • A login shell is one whose first character of argument zero is a -, or one started with the --login option.
    所谓的login shell我一开始没有明白,后来这么干了一下:
    [winfield@myhost ~]$ bash
    [winfield@myhost ~]$ ps aux | grep bash
    winfield 2966 0.0 0.1 6324 1820 tty2 S+ 14:56 0:00 -bash
    winfield 4281 0.0 0.1 6324 1824 tty1 S 16:57 0:00 -bash
    winfield 4492 0.0 0.1 6324 1836 pts/0 Ss 19:14 0:00 -bash
    winfield 4516 0.7 0.1 6324 1796 pts/0 S 20:53 0:00 bash
    winfield 4518 0.0 0.0 4072 816 pts/0 R+ 20:53 0:00 grep bash
    前面有“-”的就是指Login shell了。像tty这些。另外关于Login Shell的可以参考这个,http://learnlinux.tsf.org.za/courses/build/shell-scripting/ch02s02.html(IP是南非,大概是南非的某个大学?感叹一下)
  • When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile
    如果是Login Shell,读取文件的顺序是/etc/profile,~/.bash_profile,~/.bash_login,然后是~/.profile,注意没有~/.bashrc,这也是为什么我出现问题的原因。
  • When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of ~/.bashrc.
    如果不是Login Shell,bash会读~/.bashrc。

  

No comments: