我正在尝试编写一个小脚本,将当前目录更改为我的项目目录:
#!/bin/bash
cd /home/tree/projects/java
我将此文件保存为proj,使用chmod添加了执行权限,并将其复制到/usr/bin。当我呼叫它时:proj,它什么都不做。我做错了什么?
我正在尝试编写一个小脚本,将当前目录更改为我的项目目录:
#!/bin/bash
cd /home/tree/projects/java
我将此文件保存为proj,使用chmod添加了执行权限,并将其复制到/usr/bin。当我呼叫它时:proj,它什么都不做。我做错了什么?
当前回答
在我的具体案例中,我需要多次更改同一目录。所以在我的.bashrc(我使用ubuntu)上,我添加了
1 -
$纳米~/巴沙尔克
function switchp
{
cd /home/tree/projects/$1
}
2-
$source~/.bashrc
3 -
$switchp java
它将直接执行:cd/home/tree/projects/java
希望这有帮助!
其他回答
杰里米·鲁滕(Jeremy Ruten)使用符号链接的想法引发了一个没有任何其他答案的想法。使用:
CDPATH=:$HOME/projects
前导结肠很重要;这意味着如果当前目录中有一个目录“dir”,那么“cd dir”将更改为该目录,而不是跳到其他位置。使用如图所示的值设置,可以执行以下操作:
cd java
而且,如果当前目录中没有名为java的子目录,那么它将直接将您带到$HOME/projects/java-没有别名、没有脚本、没有可疑的exec或dot命令。
我的$HOME是/Users/jleffler;我的$CDPATH是:
:/Users/jleffler:/Users/jleffler/mail:/Users/jleffler/src:/Users/jleffler/src/perl:/Users/jleffler/src/sqltools:/Users/jleffler/lib:/Users/jleffler/doc:/Users/jleffler/work
要制作一个bash脚本,该脚本将cd到select目录:
创建脚本文件
#!/bin/sh # file : /scripts/cdjava # cd /home/askgelal/projects/java
然后在启动文件中创建别名。
#!/bin/sh # file /scripts/mastercode.sh # alias cdjava='. /scripts/cdjava'
我创建了一个启动文件,在其中转储所有别名和自定义函数。然后我将这个文件源到我的.bashrc中,以便在每次启动时设置它。
例如,创建主别名/函数文件:/scripts/mastercode.sh(将别名放在此文件中。)
然后在.bashrc文件的末尾:
source /scripts/mastercode.sh
现在很容易cd到java目录,只需键入cdjava就可以了。
您可以使用。要在当前shell环境中执行脚本,请执行以下操作:
. script_name
或者可选地,其更可读但特定于外壳的别名源:
source script_name
这避免了子shell,并允许任何变量或内置(包括cd)影响当前shell。
我执行了以下操作:
创建名为case的文件
将以下内容粘贴到文件中:
#!/bin/sh
cd /home/"$1"
保存它,然后:
chmod +x case
我还在我的.bashrc中创建了一个别名:
alias disk='cd /home/; . case'
现在,当我键入:
case 12345
实际上,我正在键入:
cd /home/12345
您可以在“case”之后键入任何文件夹:
case 12
case 15
case 17
这就像键入:
cd /home/12
cd /home/15
cd /home/17
分别地
在我的情况下,路径要长得多——这些人用前面的~信息总结了这一点。
我通过使用获得了代码<您的文件名>
./<您的文件名>不起作用,因为它不会更改终端中的目录,只是更改特定于该脚本的目录。
这是我的计划
#!/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$