我正在第一次将用户文件从旧系统移动到新系统。我的目标是使用 SCP,因为它的语法简单scp -r source destination。我首先尝试使用以下命令来复制文件:
scp -r root@10.0.0.11:/home/someuser/* .
Run Code Online (Sandbox Code Playgroud)
回想起来,根据过去的经验,这复制了所有没有前导.. 为了解决这个问题,我这样做了:
scp -r root@10.0.0.11:/home/someuser/.* .
Run Code Online (Sandbox Code Playgroud)
表示以 . 开头的任何内容的通配符.。显然(为什么我问这个问题)它没有达到我想要的效果。观察到的结果是,它将解释为.在路径中向上移动一个级别,并且它开始复制/home/*,并且(我认为)将文件放置在我的工作目录之上,而不是工作目录本身。
我对第二个命令执行的解释是否正确?我认为自从我进入以来就很容易修复~/backup,所以升级了一级~。我只是rm -rf ~/someuser在中断命令之前复制的每个用户名。这些someuser目录应该位于~/backup
从那以后,我学会了如何通过仅指定目录而不是目录中包含的文件来复制我想要的文件。
我(以某种方式)能够运行脚本:
$ assemble.sh file
... [output]
Run Code Online (Sandbox Code Playgroud)
但是which找不到:
$ which assemble.sh
which: no assemble.sh in (/s/std/bin:/usr/afsws/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/stat/bin:/usr/X11R6/bin:.
Run Code Online (Sandbox Code Playgroud)
我正在使用 bash。
我知道这个问题不是很新,但似乎我无法解决我自己的问题。
ldd 生成以下输出
u123@PC-Ubuntu:~$ ldd /home/u123/Programme/TestPr/Debug/TestPr
linux-vdso.so.1 => (0x00007ffcb6d99000)
libcsfml-window.so.2.2 => not found
libcsfml-graphics.so.2.2 => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcebb2ed000)
/lib64/ld-linux-x86-64.so.2 (0x0000560c48984000)
Run Code Online (Sandbox Code Playgroud)
哪个是告诉ld正确路径的正确方法?
当我回声$ PATH我得到这个:Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools。
我想从中删除一些路径,但是当我使用命令打开文件时vim /etc/paths,我得到以下结果:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Run Code Online (Sandbox Code Playgroud)
文件 /etc/paths 与 $PATH 变量不同吗?
在我~/.profile的最后一个块中,它应该bin/ directory像这样加载我的个人:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Run Code Online (Sandbox Code Playgroud)
但它似乎没有加载:
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?(我的外壳是 bash。)
为跳跳虎编辑
echo $0 => bash
echo $HOME => /home/student
whoami => student
less /etc/*-release =>
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Run Code Online (Sandbox Code Playgroud) 我想导出LD_LIBRARY_PATH到系统服务和所有用户。系统服务在登录前运行,因此.bashrc不适用。
如何实现这一目标?
什么是PATH在一个Mac OS?我已经用它来安装全局命令行工具,但我找到的唯一文档是这样做的教程,没有真正解释幕后发生的事情。我也没有在Wikipedia上找到相关页面。
那么和**的目的是PATH什么,有什么区别?/etc/paths~/.bash_profile
例如,在我的paths文件中,我看到:
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
Run Code Online (Sandbox Code Playgroud)
但在我的~/.bash_profile,我看到了这一点:
# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH
Run Code Online (Sandbox Code Playgroud)
这只是对paths文件的特定于用户的添加吗?里面有什么东西paths,比如/usr/bin?
我试图让 pip 指向不同的安装而不是默认安装。它当前指向/usr/bin/pip,但我希望它指向/usr/local/bin/pip。我相信我的路径设置正确,其他一切都指向正确的位置。
解决此问题的最佳方法是什么?
# echo $PATH
/usr/local/jdk/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin
# which python
/usr/local/bin/python
# which easy_install
/usr/local/bin/easy_install
# which pip
/usr/bin/pip
Run Code Online (Sandbox Code Playgroud) 在我的情况下,似乎LD_LIBRARY_PATH设置为空字符串。但是所有标准系统工具仍然可以正常工作,所以我猜动态链接器会检查这种情况并LD_LIBRARY_PATH在这种情况下使用一些默认值。
这个默认值是多少?我想它至少包括/usr/lib但还有什么?有没有什么好的系统方法来确定动态链接器将搜索的标准位置?
这个问题与动态链接器将搜索的路径略有不同。 有一个默认值意味着它会使用LD_LIBRARY_PATH如果给定的值,或者如果没有给定,它将使用默认值 - 这意味着它不会使用如果LD_LIBRARY_PATH提供了默认值。
我在 $HOME/bin 中有一个文件(在你问之前,是的,它在我的路径中)test我已经确认当我使用文件的完整路径运行它时可以正常执行。但是,当我不以这种方式运行时,我会遇到一个非常奇怪的问题。当我test在终端中运行时,它什么也不做并立即返回。我知道这不是查找文件的问题,原因如下:
没有错误信息。通常,如果找不到文件或无法执行文件,则会打印出一条消息。
运行which test仍然返回正确的文件路径。
可能是最奇怪的 - 脚本在运行时运行良好strace。我试着用strace看看我是否能弄清楚发生了什么,但是当我用 运行它时strace,它按预期工作,有 0 个问题。