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

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

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


当前回答

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

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

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

move_me 

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

其他回答

您可以执行以下操作:

#!/bin/bash
cd /your/project/directory
# start another shell and replacing the current
exec /bin/bash

编辑:这也可以是“虚线”,以防止创建后续的壳。

例子:

. ./previous_script  (with or without the first line)

cd在脚本的shell中完成。当脚本结束时,shell退出,然后您将留在原来的目录中。“源”脚本,不要运行它。而是:

./myscript.sh

do

. ./myscript.sh

(请注意脚本名称前的点和空格。)

您可以使用。要在当前shell环境中执行脚本,请执行以下操作:

. script_name

或者可选地,其更可读但特定于外壳的别名源:

source script_name

这避免了子shell,并允许任何变量或内置(包括cd)影响当前shell。

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

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

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

move_me 

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

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

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

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

示例:

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