我使用 FreeBSD 和 bash 作为 shell。我还将 SSH 与 FreeNAS 和 pfSense 一起使用,两者都基于 FreeBSD。
我对设置 bash 选项感到困惑,一些澄清确实会有帮助。我正在尝试获取在将来的会话中使用的各种 shell 选项(并导出到从会话调用的 shell),但我运气不佳。也许我不知道如何找到将它们放入的正确文件,或者将它们放在那里的正确方法。
我的主要问题可能只是找到用于会话的 rc 文件(!!) 如果我以 root 身份登录,然后执行su
,那么set
将显示不同的环境变量列表。但由于我没有更改用户,我很困惑为什么我的 rc 文件似乎不一样。 (我发现的文件没有我正在查看的环境变量的不同条目)。set
显示的输出ENV=/USERNAME/.shrc
,但是当我编辑此文件并重新登录时,我没有看到会话有任何更改,所以我猜这不是该查看的地方?但我也绑定了编辑~/.bashrc
,但这似乎也没有任何作用。
应该有一种方法可以直接找出哪个 .rc 文件用于启动会话,但我不知道如何执行此操作,特别是因为 FreeNAS 和 pfSense 可能都有自己的自定义位置。
无论是使用一个还是两个 rc 文件,我如何找到需要编辑的 rc 文件,以修改与当前会话相同的未来会话?如果您首先以 root 身份登录然后再登录,它会使用一个 rc 文件还是两个不同的文件su
?
答案1
FreeBSD 默认根 shell 是 /bin/tcsh。你应该不是更改 root 用户的 shell。您可以轻松地使用 bash shell。但随后为您自己的用户更改 shell。如果您需要 root 权限,您应该养成使用 su -c 的习惯,甚至更好:sudo。如果您这样做,您实际上并不关心 root 用户的 shell 是什么。如果您坚持要更改 root 的 shell - 那么请使用“toor”(root 向后)用户。它仍然以 uid 0 运行,但更改 shell 是安全的。
你参考,~/.bashrc
但这是相对的。在典型的 FreeBSD 安装中,这将扩展到/home/<username>/.bashrc
普通用户和/root/.bashrc
root 用户。
您写道您以 root 身份登录。我建议您不要这样做,而是以普通用户身份登录。
当启动非登录 shell 的交互式 shell 时,bash 会读取并执行来自 的命令(~/.bashrc
如果该文件存在)。这意味着登录时不会调用 .bashrc!仅当您将其作为交互式 shell 启动时。
您可能正在寻找~/.bash_profile
- 请参阅 https://forums.freebsd.org/threads/2682/