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

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

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


当前回答

我有一个名为p的简单bash脚本来管理目录更改ongithub.com/godzilla/bash-stuff只需将脚本放在本地bin目录(/usr/local/bin)中并将

alias p='. p'

在你的.bashrc中

其他回答

脚本中的cd在技术上起作用,因为它改变了运行脚本的shell的目录,但这是一个独立于交互式shell的过程。

解决这个问题的Posix兼容方法是定义shell过程,而不是shell调用的命令脚本。

jhome () {
  cd /home/tree/projects/java
}

您只需键入或将其放入各种shell启动文件之一即可。

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

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

这是我的计划

#!/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$ 

我有一个名为p的简单bash脚本来管理目录更改ongithub.com/godzilla/bash-stuff只需将脚本放在本地bin目录(/usr/local/bin)中并将

alias p='. p'

在你的.bashrc中

我执行了以下操作:

创建名为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

分别地

在我的情况下,路径要长得多——这些人用前面的~信息总结了这一点。

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

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