LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1084|回复: 8

请问 . ~/.bashrc的作用?菜鸟报道啦!

[复制链接]
发表于 2006-9-6 01:25:52 | 显示全部楼层 |阅读模式
请问.bash_profile文件内容中以下语句的作用:

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi


能否详细解释一下if.............fi之间每个表达式的作用? 关键是 then 后面的 ~/.bashrc前面的一点 "." 是什么用啊?

万分感谢!!:)
发表于 2006-9-6 09:16:57 | 显示全部楼层
我终于碰到一个我会的问题了,呵呵
.操作符等同于source命令,是shell的内建命令。
. filename把filename脚本里面的代码全部加入到本脚本,如果filename可执行,则执行filename(相当于inline函数)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-6 14:12:03 | 显示全部楼层
我上网看到一个说法是

通常情况下,shell script是在子shell中执行的,因此在此子shell中对变量所作的
修改对父shell不起作用。点(.) 命令使用shell在不创建子shell而由当前shell读取
并执行一个shell script, 可以通过这种方式来定义函数及变量。

这个说法对吗?请问
回复 支持 反对

使用道具 举报

发表于 2006-9-6 15:04:48 | 显示全部楼层
准确地说法是在当前shell进程中从文件读取并执行其中的命令并获取返回值。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-7 01:27:21 | 显示全部楼层
请问到底什么命令,或在什么情况下会自动产生子shell? 搞不明白。。。。。。。。。

有文章写到,如下:

父shell与子shell
用户使用的第一个shell(登录shell)是所有shell的父shell。
子shell是如何产生的:
1.用户可以在 某一shell环境下执行ksh,csh,sh命令直接产生并进入子shell。
2.shell在命令或程序运行时自动派生子shell。
·如果命令或程序是一个可执行文件,且是编译好的二进制代码,shell自动建立一个子进程并立即执行之。
·如果该文件是一个shell脚本文件,shell就派生出一个子shell去解释且执行它

又有文章写道:

在当前shell中执行内部命令不会派生子shell,因此有些内部命令才能够改变当前的shell执行环境。
在当前shell中执行外部命令或脚本时会派生子shell,所以这时命令的执行不会影响当前 的shell环境。

请问 ps 命令会产生子shell吗? ps 命令是内部命令吧,如上所说是不会派生子shell的, 但为什么用ps -l后,ps 命令也是一个进程呢?而且是调用它的那个shell的子进程~~~ 到底是为什么???

父程序与子程序即父shell与子shell吗?不一样的吧??

PID 与PPID分别是程序与其父程序的ID吗?还是shell与其父shell的ID?

谢谢
回复 支持 反对

使用道具 举报

发表于 2006-9-7 07:58:44 | 显示全部楼层
ps 不是内部命令
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-7 09:29:35 | 显示全部楼层
那ps是什么命令呢?为什么需要派生一个子进程?
回复 支持 反对

使用道具 举报

发表于 2006-9-8 00:35:53 | 显示全部楼层
sh(all shell interpreters) was designed to always fork a subshell and then exec the command, *unless* you call the command in some special ways, such as source, ".", exec cmd. Internal cmd s are essentially sh builtin functions.
回复 支持 反对

使用道具 举报

发表于 2006-9-8 01:30:49 | 显示全部楼层
情比较
/home/lee/test#cat test.sh
#!/bin/bash
echo $$
/home/lee/test#echo $$
2326
/home/lee/test#sh test.sh
3607
/home/lee/test#. ./test.sh
2326
/home/lee/test#
回复 支持 反对

使用道具 举报

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

本版积分规则

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