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

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

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


当前回答

在~/.bash_profile文件中。添加下一个函数

move_me() {
    cd ~/path/to/dest
}

重新启动终端,您可以键入

move_me 

您将被移动到目标文件夹。

其他回答

这是一个老问题,但我真的很惊讶,我在这里没有看到这个技巧

您可以使用

export PWD=the/path/you/want

无需创建子外壳或使用别名。

请注意,您有责任确保/path/you/want存在。

注意讨论如何设置父进程的工作目录?

它包含一些粗俗的答案,例如。https://stackoverflow.com/a/2375174/755804(通过gdb更改父进程目录,不要这样做)和https://stackoverflow.com/a/51985735/755804(将cd目录名注入父进程的输入流的命令tailcd;理想情况下,它应该是bash的一部分,而不是黑客)

如果以反斜杠结束行,则可以在同一子shell中执行某些行。

cd somedir; \
pwd

在我的具体案例中,我需要多次更改同一目录。所以在我的.bashrc(我使用ubuntu)上,我添加了

1 -

$纳米~/巴沙尔克

 function switchp
 {
    cd /home/tree/projects/$1
 }

2-

$source~/.bashrc

3 -

$switchp java

它将直接执行:cd/home/tree/projects/java

希望这有帮助!

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

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

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

示例:

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