我正在尝试编写一个小脚本,将当前目录更改为我的项目目录:

#!/bin/bash
cd /home/tree/projects/java

我将此文件保存为proj,使用chmod添加了执行权限,并将其复制到/usr/bin。当我呼叫它时:proj,它什么都不做。我做错了什么?


当前回答

代替将脚本文件和cd执行到特定文件夹,

我们可以通过以下方式实现:

源或。特定shell脚本别名cd命令定义一个函数ant cd to folder

示例:

. script
# or
source script
alias ghqc='cd $(ghq root)/$(ghq list | fzf)'
ghqc() {
  cd $(ghq root)/$1
}

其他回答

要快速导航目录,有$CDPATH、cdargs和自动生成别名的方法

http://jackndempsey.blogspot.com/2008/07/cdargs.html

http://muness.blogspot.com/2008/06/lazy-bash-cd-aliaes.html

https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5827311.html

我通过使用获得了代码<您的文件名>

./<您的文件名>不起作用,因为它不会更改终端中的目录,只是更改特定于该脚本的目录。

这是我的计划

#!/bin/bash 
echo "Taking you to eclipse's workspace."
cd /Developer/Java/workspace

这是我的终端

nova:~ Kael$ 
nova:~ Kael$ . workspace.sh
Taking you to eclipe's workspace.
nova:workspace Kael$ 

您可以使用运算符&&:

cd myDirectory&&ls

这将Serge的回答与David的不相关回答结合起来。它更改目录,然后启动用户的默认shell,而不是强制使用bash shell。然而,它需要getent和/etc/passwd来检测默认shell。

#!/usr/bin/env bash
cd desired/directory
USER_SHELL=$(getent passwd <USER> | cut -d : -f 7)
$USER_SHELL

当然,这仍然具有创建嵌套外壳的相同缺陷。

这应该是你想要的。更改到感兴趣的目录(从脚本中),然后生成一个新的bash shell。

#!/bin/bash

# saved as mov_dir.sh
cd ~/mt/v3/rt_linux-rt-tools/
bash

如果你运行这个,它会把你带到感兴趣的目录,当你退出它时,它会让你回到原来的位置。

root@intel-corei7-64:~# ./mov_dir.sh

root@intel-corei7-64:~/mt/v3/rt_linux-rt-tools# exit
root@intel-corei7-64:~#

当您退出时,这甚至会将您带回到原始目录(CTRL+d)