【问题标题】:How to add an alias to .bashrc file?如何为 .bashrc 文件添加别名?
【发布时间】:2018-12-11 01:27:43
【问题描述】:

我是 Ubuntu 的新手。我需要在我的.bashrc 文件中设置路径,但即使是系统管理员,我也会收到权限被拒绝错误。

export TCFRAME_HOME=~/tcframe
alias tcframe=$TCFRAME_HOME/scripts/tcframe

现在当我输入 tcframe version 我得到

bash: /home/p46562/tcframe/scripts/tcframe: No such file or directory

如何解决这个问题?

【问题讨论】:

  • 这个问题在 ehem 堆栈溢出之类的地方被彻底反复记录。
  • 这里的别名定义没有问题(尽管将~/tcframe/scripts 添加到您的路径会更简单)。您可能缺少tcframe 本身的执行权限; chmod +x ~/tcframe/scripts/tcframe.
  • @An0n 这完全是被误导的建议。以 root 身份编辑您的个人文件只会导致新的权限问题。
  • 这也是误导,出于同样的原因。

标签: bash ubuntu environment-variables


【解决方案1】:

错误消息告诉您您正在尝试执行一个不存在的文件。

我们可以隐约猜测确实存在哪些文件,但如果无法访问您的系统,我们无法确定您实际安装了什么以及安装在哪里。

也许您的主目录中名为scripts 的目录中有一个名为tcframe 的文件?

alias tcframe=$HOME/scripts/tcframe

避免在您的环境中为您在某处安装的每个随机实用程序使用一个或多个别名的常见安排是为您的PATH 创建一个专用目录 - 一个常见的约定是调用它bin - 并填充它带有指向您想要可执行的内容的符号链接。

只有一次,

mkdir $HOME/bin

edit your .profile (or .bash_profile or .bashrc if you prefer) 包含该行

PATH=$HOME/bin:$PATH

从现在开始,要使可执行脚本无需显式路径即可从任何地方访问,请在 bin 中创建指向它的符号链接;

ln -s $HOME/scripts/tcframe $HOME/bin

注意语法类似于cp;最后一个参数是目标(可以是目录或新文件名),第一个参数(以及最后一个参数之前的任何后续参数,如果最后一个是目录)是源。当目标是目录时,每个源参数的文件名用作目标目录中新符号链接的名称。

还请注意,您通常希望使用绝对路径;相对路径是相对于bin 解析的(例如

ln -s ../scripts/tcframe $HOME/bin

即使您当前位于../scripts 不存在的目录中。)

根据定义,脚本需要是可执行的。如果不是,当您尝试运行它们时,您会得到“权限被拒绝”。这是由权限控制的;每个文件都有一组权限位,指示您是否可以读取、写入(或覆盖)和执行该文件。这些权限也是为您的组成员(因此您可以管理粗略的团队访问权限)和其他所有人单独设置的。但是对于您的个人脚本,您只关心为自己设置了x(可执行)位。如果不是,您可以更改它 - 只需要一次。

chmod +x scripts/tcframe

【讨论】:

  • 有时您会看到使用chmod 777 的建议,但这是一个严重的安全问题。 不要惊慌;慢慢后退,然后跑。
猜你喜欢
  • 2011-07-19
  • 2018-07-07
  • 2015-03-28
  • 1970-01-01
  • 2013-10-11
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
相关资源
最近更新 更多