当前位置: 技术问答>linux和unix
如何在shell中使用内建命令
来源: 互联网 发布时间:2015-02-24
本文导语: 在shell中使用cd命令,可以进入目录,但是运行完shell之后,目录仍是原来的, 没有改变,如何才可以用脚本进入目录。 请大家帮帮忙,多谢了。 | 假设你的脚本文件为foo.sh 使用 . ./foo.sh ...
在shell中使用cd命令,可以进入目录,但是运行完shell之后,目录仍是原来的,
没有改变,如何才可以用脚本进入目录。
请大家帮帮忙,多谢了。
没有改变,如何才可以用脚本进入目录。
请大家帮帮忙,多谢了。
|
假设你的脚本文件为foo.sh
使用
. ./foo.sh (b shell)
或
source ./foo.sh (c shell)
运行脚本即可。
使用
. ./foo.sh (b shell)
或
source ./foo.sh (c shell)
运行脚本即可。
|
执行一个SHELL脚本,就好似执行一个进程是一样的。
在SHELL脚本里面可以任意的 cd ,但是对于当前路径而言是没有什么影响的。
变通的方法就是 . yourshell.sh ,就是强制以命令行方式执行。
在SHELL脚本里面可以任意的 cd ,但是对于当前路径而言是没有什么影响的。
变通的方法就是 . yourshell.sh ,就是强制以命令行方式执行。
|
这个问题要这样看:
一般一个 shell 是一个进程,它解释执行所敲入的命令,如果该命令是一个执行程序(包括 SHELL 脚本文件),它就创建一个子进程来运行,子进程继承父进程的环境(包括工作目录),但子进程不会改变父进程的环境。
cd 和 . 是 shell 的内部命令,不创建子进程,可以修改当前进程的环境,因此 cd 可以改变工作目录。详细情况可参看 cd 的手册。
原理一搞清,好多问题就好解释了。有些命令是无法加强的。
一般一个 shell 是一个进程,它解释执行所敲入的命令,如果该命令是一个执行程序(包括 SHELL 脚本文件),它就创建一个子进程来运行,子进程继承父进程的环境(包括工作目录),但子进程不会改变父进程的环境。
cd 和 . 是 shell 的内部命令,不创建子进程,可以修改当前进程的环境,因此 cd 可以改变工作目录。详细情况可参看 cd 的手册。
原理一搞清,好多问题就好解释了。有些命令是无法加强的。
|
楼上朋友都说了呀!
. yourcd.sh (sh/ksh)
source yourcd.sh (csh)
而不是直接
yourcd.sh
意思是强制SHELL程序在当前sh下执行
不起子sh
子sh不能更改父sh的环境
. yourcd.sh (sh/ksh)
source yourcd.sh (csh)
而不是直接
yourcd.sh
意思是强制SHELL程序在当前sh下执行
不起子sh
子sh不能更改父sh的环境
|
好像用linux提供的shell不能修改你执行当前shell的目录,由于shell脚本会自动创建一个新的shell环境,它所修改的都是那个新环境中的内容,你看时的执行环境不会变化,要么用其他程序,要么你将随后相关操作也吧,呵呵
要么你就通过source xxx.sh方式执行shell程序,它会改变当前环境
要么你就通过source xxx.sh方式执行shell程序,它会改变当前环境
|
我想知道你多打一个字母(chd)的目的是什么?如果你喜欢的话,可以用:
alias chd='cd'
实现此目的。
alias chd='cd'
实现此目的。