linux创建软链接命令-ln -s

本文介绍如何在Linux环境下使用ln命令创建软链接,并通过实例演示了解决Oracle SQL*Plus命令未找到的问题。文章详细展示了环境变量配置及通过创建软链接使SQL*Plus能在不同目录下被正确调用的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux 创建连接命令 ln -s 软链接

这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,

具体用法是:ln -s 源文件 目标文件。

当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln -s /bin/less /usr/local/bin/less
-s 是代号(symbolic)的意思。
这 里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接又软链接 和硬链接两种,软链接就是ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls -l命令去察看,就可以看到显示的link的路径了。


===========================================================================

演示一个实战例子:

bash: sqlplus: command not found 解决方法 

环境变量已经配好,但是仍报错:

[oracle@dg1 ~]$ vi .bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME


export EDITOR=vi
export ORACLE_SID=dg1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin
export PATH=$ORACLE_HOME/bin:$PATH
umask 022

解决方法:

[oracle@dg1 ~]$ sqlplus /nolog
bash: sqlplus: command not found
[oracle@dg1 ~]$ ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
ln: creating symbolic link `/usr/bin/sqlplus' to `/bin/sqlplus': Permission deni ed
[oracle@dg1 ~]$ su - root
Password:
[root@dg1 ~]# ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
[root@dg1 ~]# su - oracle
[oracle@dg1 ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Mon May 11 12:51:24 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size                  1218316 bytes
Variable Size              79694068 bytes
Database Buffers           83886080 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
SQL>



### Linux创建软链接的权限要求及解决方案 在 Linux 系统中,`ln -s` 命令用于创建软链接(symbolic link)。软链接类似于 Windows 的快捷方式,它是一个指向其他文件或目录的特殊文件。以下是关于 `ln -s` 权限要求及其可能遇到的问题和解决方案。 #### 1. 创建软链接的基本权限需求 要成功执行 `ln -s` 命令创建软链接,需要满足以下条件: - **目标路径写入权限**:用户必须具有对目标路径(即软链接所在的位置)的写入权限。这是因为创建软链接实际上是在指定的目标位置生成了一个新文件[^1]。 - **源文件可读权限**:虽然软链接本身并不依赖于源文件的内容,但在某些实现中,如果源文件不可访问,则可能导致错误提示或其他异常行为。因此建议确保当前用户能够至少读取到源文件的信息[^3]。 #### 2. 解决权限不足问题的方法 当尝试使用 `ln -s` 创建软链接时可能会因为权限不足而失败。下面列举了几种常见的解决方法: - **更改工作目录至拥有适当权限的地方** 如果发现无法在一个特定目录下建立符号链接是因为缺乏足够的权利,在这种情况下可以考虑切换到另一个允许操作的工作区再做相应处理。例如: ```bash cd ~/my_directory_with_write_permission/ ln -s /path/to/source_file_or_dir symbolic_link_name ``` - **提升权限通过sudo命令** 当确实有必要在受限区域放置符号链接而又无权这样做时,可以通过超级管理员身份来完成这项任务。注意这应该谨慎行事以免破坏系统的安全机制或者引发不必要的麻烦。示例如下所示: ```bash sudo ln -s /path/to/source_file_or_dir /destination/directory/symbolic_link_name ``` - **检查文件系统支持情况** 对于一些特殊的文件系统(比如FAT32),它们可能根本不支持POSIX风格的链接功能。在这种情形之下即使获得了最高级别的授权也无法达成目的。此时需确认所使用的磁盘分区格式是否兼容此类特性[^2]。 #### 示例代码展示如何正确应用ln-s指令 这里给出一段简单的Shell脚本来演示上述理论的实际运用过程: ```bash #!/bin/bash SOURCE="/absolute/path/to/existing/file" DESTINATION="$HOME/my_symlink" if [ ! -e "$SOURCE" ]; then echo "Source does not exist!" else mkdir -p "$(dirname "$DESTINATION")" if [ -w "$(dirname "$DESTINATION")" ]; then ln -sfv "$SOURCE" "$DESTINATION" else echo "No write permission at destination directory." fi fi ``` 此脚本首先验证了原始资源的存在状态;接着准备好了最终产物所在的子目录结构;最后依据本地用户的写作许可决定采用常规手段还是借助sudo辅助完成整个流程。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值