有一些目录我需要比其他目录更频繁地访问,比如音乐、工作、编程等。所以我希望有专属命令,比如“gotomusic”或“gotodropbox”来访问这些文件夹,否则我必须输入类似的内容cd /media/sda9/Work/Dropbox
等等。
这是个好主意吗?有没有更好的方法可以达到同样的效果?
我尝试编写以下脚本“gotomusic”
#!/bin/bash
cd /media/sda8/Music
但它不起作用。这样做有什么错?
谢谢!
答案1
我认为你可以在 stackoverflow 上找到正确的解决方案:
答案2
您可以使用别名来执行此操作,只需添加您的~/.bashrc
alias gotomusic='cd /home/user/music'
alias gotopics='cd /home/user/pictures'
ETC...
答案3
问题是,您无法更改父进程的工作目录。
与您的问题相关的流程如下:
您的交互式 shell 的当前工作目录是$PWD
。然后您启动gotomusic
,并且您的交互式 shell(我将其称为parentbash
)将启动 的新实例bash
(我将其称为childbash
)作为新进程。childbash
继承 的几个属性parentbash
。除其他属性外,它从 继承了其工作目录parentbash
。
由于您指示childbash
从脚本中读取命令,它会将其自己的工作目录更改为/media/sda8/Music
并终止。
此时parentbash
再次处于活动状态,其状态与 执行之前相同childbash
。
为了parentbash
调用其cd
内置命令,您应该获取脚本。这很容易做到
source gotomusic
但问题仍然是这种方法是否适合快速目录更改。
目录书签系统有多种实现方式bashmarks
,但我认为最好的解决方案是您可以从最常用的目录列表中轻松选择。我不知道是否存在类似的东西,bash
但如果您想使用,zsh
您可以在 [1]。