我正在尝试编写一个小脚本,将当前目录更改为我的项目目录:
#!/bin/bash
cd /home/tree/projects/java
我将此文件保存为proj,使用chmod添加了执行权限,并将其复制到/usr/bin。当我呼叫它时:proj,它什么都不做。我做错了什么?
我正在尝试编写一个小脚本,将当前目录更改为我的项目目录:
#!/bin/bash
cd /home/tree/projects/java
我将此文件保存为proj,使用chmod添加了执行权限,并将其复制到/usr/bin。当我呼叫它时:proj,它什么都不做。我做错了什么?
当前回答
我通过使用获得了代码<您的文件名>
./<您的文件名>不起作用,因为它不会更改终端中的目录,只是更改特定于该脚本的目录。
这是我的计划
#!/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$
其他回答
虽然获取要运行的脚本是一种解决方案,但您应该知道,该脚本可以直接修改当前shell的环境。此外,无法再传递参数。
另一种方法是将脚本实现为bash中的函数。
function cdbm() {
cd whereever_you_want_to_go
echo "Arguments to the functions were $1, $2, ..."
}
自动跳转使用此技术:http://github.com/joelthelion/autojump/wiki为您提供学习shell目录书签。
你可以结合Adam&Greg的别名和圆点方法,做出更具活力的东西-
alias project=". project"
现在运行项目别名将在当前shell中执行项目脚本,而不是子shell。
您可以使用。要在当前shell环境中执行脚本,请执行以下操作:
. script_name
或者可选地,其更可读但特定于外壳的别名源:
source script_name
这避免了子shell,并允许任何变量或内置(包括cd)影响当前shell。
我有一个名为p的简单bash脚本来管理目录更改ongithub.com/godzilla/bash-stuff只需将脚本放在本地bin目录(/usr/local/bin)中并将
alias p='. p'
在你的.bashrc中
我通过使用获得了代码<您的文件名>
./<您的文件名>不起作用,因为它不会更改终端中的目录,只是更改特定于该脚本的目录。
这是我的计划
#!/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$