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

时间:2016-06-03 23:12:35

标签: bash macos terminal sudo nano

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

基本上不是输入

sudo nano /Users/myUserName/.bash_profile

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

我想要一个放在.bash_profile中的命令为我做这个,手动添加这行代码:

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

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

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:3)

修复.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中删除别名,你必须这样做你自己,或者退出那个贝壳。

另见:

答案 1 :(得分:1)

我建议先更改~/.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

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