终端认为我在 .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除了cd用不了其他命令,又关闭了终端