![我无法创建别名来更改目录和列出内容](https://linux22.com/image/166154/%E6%88%91%E6%97%A0%E6%B3%95%E5%88%9B%E5%BB%BA%E5%88%AB%E5%90%8D%E6%9D%A5%E6%9B%B4%E6%94%B9%E7%9B%AE%E5%BD%95%E5%92%8C%E5%88%97%E5%87%BA%E5%86%85%E5%AE%B9.png)
我知道存在之前关于这个主题的问题。但是版主删除了我在这些帖子中的问题,因此我在这里问同样的问题。
在我的.bashrc我尝试:
alias cl='$HOME/.cFolder.sh'
其内容.cFolder.sh
为:
#!/bin/bash
cFolder() {
cd $1 && pwd && ls;
}
cFolder $1
当我执行新别名时,我得到:
乔纳森 〜 $ cl Documentos/myScripts/ /home/jonathan/Documentos/myScripts arranque-fallido.log firstInstall.sh makeAllPacks.sh ORIGINAL-installPegaso.sh RestoreBackup.sh startInitialConfig.sh 配置 USB 安装.sh 修复数据库.sh makeInstallationPack.sh README.md 恢复数据.sh testZenity.sh downloadDebs.sh installAppPack.sh myScripts-Functions.sh recoverySystem.sh setNetwork.sh updateWeb.sh 乔纳森 〜 $
文件列表是正确的。但它不会改变我的实际文件夹。 .cFolder.sh脚本在他自己的空间中运行。
选项:
alias cl='cFolder() { cd $1 && pwd && ls; }'
对我不起作用。我怎样才能解决这个问题?
答案1
您的第一次尝试创建一个别名来运行更改目录的 shell 脚本。只是,正如许多地方所解释的,您无法从子 shell 更改当前 shell 的目录。所以这是行不通的。
第二次尝试创建一个定义函数的别名。它不运行它,所以这几乎肯定不是您想要的。
删除您创建的别名,并将其放入您的.bashrc
cFolder() { cd "$1" || return; pwd; ls; }
下次启动 shell 时,您将有一个名为 的新“命令” cFolder
。不需要别名。不需要单独的脚本。