终端认为我在 .bash_profile (mac) 中输入的命令中的“nano”是“open”

Posted

技术标签:

【中文标题】终端认为我在 .bash_profile (mac) 中输入的命令中的“nano”是“open”【英文标题】:Terminal thinks "nano" is "open" in a command I put in .bash_profile (mac) 【发布时间】:2016-10-04 03:08:20 【问题描述】:

我已经制作了一堆用作快捷方式的命令并且它们可以工作,但我想制作一个命令来快捷方式并使用 .bash_profile 打开终端内文本编辑器 nano。

基本上不是打字

sudo nano /Users/myUserName/.bash_profile

(sudo 是这样我可以保存编辑)

我想要一个我放入 .bash_profile 的命令来为我执行此操作,手动将这行代码添加到其中:

alias commands='sudo nano /Users/myUserName/.bash_profile'

问题是,当我运行命令时,它只是在 textedit 中打开文件,这是一个锁定的文件,这意味着我无法编辑。

有没有办法做到这一点?

【问题讨论】:

你能做一个ls -l ~/.bash_profile吗? 【参考方案1】:

修复 .bash_profile 的权限

.bash_profile 通常应该归用户所有,而不是 root。

我建议使用 sudo chown myUserName /Users/myUserName/.bash_profile 将其还原给正确的用户,然后完全停止使用该 sudo 命令。无需拥有超级用户权限即可开始编辑该文件。

恕我直言,你让它变得比需要的更困难。

请勿使用 root 权限编辑您的文件。

恢复正常的所有权、组和权限后,您只需键入

nano ~/.bash_profile 或任何你最喜欢的编辑器。

命令前面的sudo 使用超级用户(root)作为有效的用户ID,谨慎使用它。这有点像原力的黑暗面:是的,超级用户可以做更多事情,但是一旦你开始使用它,就很难回到光明面,因为你所有的东西都归超级用户所有,你会开始看到东西不应该失败的失败。

在已运行的 shell 中应用已编辑的 .bash_profile

已运行的 bash 副本不会自动获取您对 .bash_profile 所做的任何更改。需要告知它接受更改。

您可以通过启动另一个终端来启动新的 shell。

或者您也可以应用一些更改(但可能不会撤消原始文件中的所有内容!) .bash_profile 通过“采购”文件:

. ~/.bash_profile 会为你做这件事 - 但它可以做的事情有限制(例如,如果你为 ls 定义了一个别名,删除该行并再次获取 bash_profile 不会从你正在运行的 shell 中删除别名,你必须这样做你自己,或者退出那个shell。

另见:

How do I edit $PATH (.bash_profile) on OSX? sudo open -e ~/.bash_profile Permission denied mac How to reload .bash_profile from the command line?

【讨论】:

您也应该适当地建议更改组。 @andlrc :可能是个问题,但不太可能影响他写入文件的能力。我实际上希望 OP 发布文件的ls -l 的输出,因为它目前......很难预测过去发生了什么。【参考方案2】:

我建议首先更改~/.bash_profile 的(正确)权限/所有权。然后你可以为一个命令创建一个函数来编辑它;还可以尝试将nano 设置为您的默认编辑器:

$ sudo chown user:staff ~/.bash_profile

这应该会更改权限(用您的用户和组替换)。然后,如果您想要编辑文件的快捷方式,请将其添加到 ~/.bash_profile:

# Preferred editor (nano)
export EDITOR=nano

# Edit ~/.bash_profile in nano
edbp ()  nano ~/.bash_profile ; 

添加并保存后重新启动终端。下面的命令应该是 nano ~/.bash_profile:

$ edbp

快速/轻松地编辑您的个人资料。

【讨论】:

很难说出 .bash_profile 中还有什么和/或 OP 是否知道如何在正在运行的 shell 中获取它等。创建别名来编辑 .bash_profile 听起来不太有希望人们可能会在里面找到什么...... 我删除了我的cmets,我看到你改进了你的答案!

以上是关于终端认为我在 .bash_profile (mac) 中输入的命令中的“nano”是“open”的主要内容,如果未能解决你的问题,请参考以下文章

Mac 终端每次启动都要执行 source .bash_profile

问题:Mac 打开终端后要‘source ~/.bash_profile’ 环境变量才生效

mac 配置.bash_profile不生效问题

mac 修改环境变量bash_profile除了cd用不了其他命令,又关闭了终端

解决 MAC 终端上每次打开新窗口手动执行source ~/.bash_profile导出环境变量

.bash_PROFILE:Mac终端中没有这样的文件或目录