如何更改Shell脚本中的目录?

时间:2013-02-08 15:35:02

标签: git shell

这是我第一次创建Shell脚本。

目前我正在使用nodejs,我正在尝试创建一个Shell脚本并在其中使用git。

我的脚本是什么样的

#!/bin/bash
git clone git://github.com/Tmeister/Nodejs---Boilerplate.git site

此脚本位于我的桌面,它可以正常工作(是的,我安装了git)。

我想要什么

下载git存储库之后,我想:

cd /site
npm install

我安装了Nodejs和NPM。

我尝试了什么

我只想潜入已创建的文件夹并运行命令npm install,所以我想这样做:

#!/bin/bash
git clone git://github.com/Tmeister/Nodejs---Boilerplate.git site
echo "cd /site"
echo "npm install"

此外,我已经阅读了alias,我尝试了

#!/bin/bash
git clone git://github.com/Tmeister/Nodejs---Boilerplate.git site
alias proj="cd /site"
proj
echo "npm install"

但没有任何作用..

任何可以帮助我的人?​​

1 个答案:

答案 0 :(得分:6)

它可能比你想象的要简单(因为你一直在编写bash(或者你使用的任何shell)'脚本',只需使用命令行):

#!/bin/bash
git clone git://github.com/Tmeister/Nodejs---Boilerplate.git site
cd site
npm install

cd - # back to the previous directory

为了使其更加健壮,只有在npm成功时才会运行cd siteChaining commands together中的更多信息):

git clone git://github.com/Tmeister/Nodejs---Boilerplate.git site
cd site && npm install && cd -

仅仅因为我读了一篇关于reliable bash的文章,这里还有另一个版本:

#!/bin/bash

OLDPWD=$(pwd)
git clone git://github.com/Tmeister/Nodejs---Boilerplate.git site \
    && cd site && npm install && cd "$OLDPWD"
function atexit() { cd "$OLDPWD"; }
trap atexit EXIT # go back to where we came from, however we exit