我的$HOME/bin
文件夹中有一些脚本。当我远程访问我的计算机时,我无法使用它们,我不明白为什么。当我在远程计算机前时,它们工作正常。
我认为这可能与文件有关.bashrc
。PATH
设置为
PATH=$PATH:$HOME/bin
export PATH
但对我来说这似乎是正确的。
我也尝试过在注销后再复制文件夹中的文件/usr/bin
并重新登录,但仍然无法使用我的脚本。
如果我进入~/bin
目录并输入./myscript
脚本工作(只是我需要从需要处理一些文件的不同文件夹运行它)。
答案1
发生这种情况的原因是,当你通过 SSH 登录时,你获得的 shell 是登录外壳。相反,用文档中的术语来说bash
,当你在已经启动的图形登录会话中打开终端窗口时,你获得的 shell 仍然是交互式外壳但它是不是登录 shell。
从man bash
:
什么时候狂欢被调用为一个交互式登录 shell,或者被调用为一个非交互式 shell,- 登录选项,它首先从文件 读取并执行命令
/etc/profile
(如果该文件存在)。读取该文件后,它会按顺序查找~/.bash_profile
、~/.bash_login
和~/.profile
,然后从第一个存在且可读的文件中读取并执行命令。 --无配置文件启动 shell 时可以使用选项来抑制这种行为。当登录 shell 退出时,bash 将从文件读取并执行命令
~/.bash_logout
(如果存在)。当启动非登录 shell 的交互式 shell 时,bash 将从
/etc/bash.bashrc
和 读取并执行命令~/.bashrc
(如果这些文件存在)。这可以通过使用 --norc选项。--rc文件 文件选项将强制 bash 读取并执行来自文件而不是/etc/bash.bashrc
和~/.bashrc
。
因此您应该检查您是否拥有以下任何文件:
~/.bash_profile
~/.bash_login
~/.profile
如果有的话,那么你应该编辑你找到的第一个文件并将其添加$HOME/bin
到你的路径中。如果没有,请为此目的创建一个。(最好创建一个,~/.profile
因为其他 shell 也会使用它。)
您几乎肯定有~/.profile
,因为 Ubuntu 的默认行为是使用任何新用户帐户(包括安装 Ubuntu 时创建的第一个帐户)创建它。
bin
但是,默认情况下此文件已经包含将您的私人目录添加到所需的行$PATH
:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
因此,这对您来说不起作用,这有点奇怪。
根据您的需要,您可能想要拨打~/.profile
(或~/.bash_login
或~/.bash_profile
)电话~/.bashrc
:
source ~/.bashrc
但更好的方法是只在in (或或)$HOME/bin
中添加几行,但是$PATH
~/.profile
~/.bash_login
~/.bash_profile
不是 ~/.bashrc
。毕竟,如果您对每个登录 shell 都执行此操作,那么当您以图形方式登录时也应该会发生这种情况,并由所有非登录 shell 的交互式 shell 继承。
答案2
只需将您的配置放入.bash_配置文件主目录中的文件。
如果你没有,你可以创建它。