使用bash更改目录'cd'

时间:2011-10-20 15:36:00

标签: bash

我想使用bash文件更改linux中的目录。以下是使用的代码段。

#!/bin/bash
alias proj="cd /home/prag/Downloads"

但是在运行bash文件时没有响应,即它保持在同一目录中。为什么会如此。?为什么别名在这里不起作用,或者我应该做些不同的事情。

4 个答案:

答案 0 :(得分:4)

运行bash文件将不起作用,因为对当前工作目录的更改保留在脚本中(因为它是一个单独的进程,为您提供命令提示符 - bash)。

将别名添加到〜/ .bash_aliases或〜/ .bashrc文件中(前者更可取,如果前者不存在,后者可能会更快)然后它应该可以工作。

答案 1 :(得分:2)

每个进程都有自己的当前目录。当您启动bash脚本并更改其当前目录然后存在时,这对父进程(即启动脚本的shell)没有影响。

不要运行./script.sh,而是试试source ./script.sh(简称. ./script.sh)。

此外,为alias定义cd不会自行更改目录。我假设你实际上在某个地方调用了别名。

答案 2 :(得分:0)

你是说你想写一个将cd到另一个目录的bash脚本吗?

然后为什么要使用别名?只需使用“cd”命令!

答案 3 :(得分:0)

这是因为当您调用./cd.sh时,脚本会在新的shell进程中执行。 因此,您的脚本将更改该子shell中的目录,并且当您的脚本退出时,控制权将返回到您之前的shell。

您可以像. cd.sh那样调用脚本 - 这会执行当前shell中的脚本并且cd-command可以正常工作。