1

我想在我的主目录 (/home/user) 中创建(并执行)一个 shell 脚本。

尝试了以下方法:

printf "cd /mypath\n" > myShortcut.sh
chmod +x myShortcut.sh
sh myShortcut.sh

我哪里错了?

(我正在尝试设置一个快捷方式来导航到不同的目录)

4

3 回答 3

4

这里到底出了什么问题?脚本执行后你还在 /home/user 中吗?那是因为执行脚本会创建一个子 shell,一旦脚本结束,它就会返回到父 shell。因此,您的 cd 在您当前的 shell 中没有任何效果。

于 2012-09-18T12:43:23.627 回答
3

如果要在当前 shell中执行脚本(而不是在subshel​​l中),请使用source(或.)命令:

 source myShortcut.sh

这应该会按预期更改目录。

此外,source 还允许您在当前 shell 中设置和更改环境变量——这本身就是一个非常常见的问题 :-)

于 2012-09-18T13:05:58.663 回答
2

由于其他答案的内容,这将不起作用。该脚本在子 shell 中运行。

对于这样的快捷方式,您可以设置一个别名,编辑主目录中的 .bashrc 文件并添加一行

别名快捷方式='cd /mypath'

将“快捷方式”替换为您想要命名的任何内容,并将 mypath 替换为您想要的路径。重新启动 shell(关闭终端并重新打开或 w/e),这应该可以按您的意愿工作。然后,您可以在 shell 中的任何位置使用“快捷方式”。

于 2012-09-18T12:45:37.593 回答