关于bash:终端认为“nano”在我输入的命令中是“开放的”.bash_profile(mac)

Terminal thinks “nano” is “open” in a command I put in .bash_profile (mac)

我已经做了很多命令来用作快捷方式,它们也可以工作,但是我想做一个命令来快捷方式,并用.bash_配置文件打开终端内的文本编辑器nano。

基本上不是打字

1
sudo nano /Users/myUserName/.bash_profile

(sudo是为了保存编辑)

我想在.bash_配置文件中输入一个命令,手动将这一行代码添加到其中:

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

问题是,当我运行该命令时,它只会以textedit方式打开文件,并且它是一个锁定的文件,这意味着我无法编辑。

有办法吗?


修复对.bash_配置文件的权限

.bash_profile通常由用户拥有,而不是由根用户拥有。

我建议使用sudo chown myUserName /Users/myUserName/.bash_profile将其恢复到正确的用户,然后完全停止使用sudo命令。没有必要拥有超级用户的权限来编辑该文件。

我知道你让事情变得比需要的更困难了。

不要用根权限编辑文件。

一旦恢复了正常的所有权、组和权限,您所需要的就是键入

或者你最喜欢的编辑。

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

在已运行的shell中应用已编辑的.bash_配置文件

已经运行的bash的副本不会自动获取您对.bash_配置文件所做的任何更改。需要让它接受变化。

或者通过启动另一个终端来启动一个新的shell。

或者您也可以应用一些更改(但可能无法撤消原始文件中的所有内容!).bash_profile通过"寻源"文件:

. ~/.bash_profile将为您这样做-但是它可以做什么是有限制的(例如,如果您为ls定义了一个别名,删除该行并再次获取bash_配置文件将不会从正在运行的shell中删除别名,您将不得不自己做,或者退出该shell。

参见:

  • 如何在OSX上编辑$path(.bash_profile)?
  • sudo open-e~/.bash_配置文件权限被拒绝mac
  • 如何从命令行重新加载.bash_概要文件?


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

1
$ sudo chown user:staff ~/.bash_profile

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

1
2
3
4
5
# Preferred editor (nano)
export EDITOR=nano

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

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

1
$ edbp

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