It should be stable as long as you double-click on a link to invoke your script (as long as you don't change the way you create the link, change any configuration variables that control how links are set, or change the attributes of the link). It should also work if you double-click on the script's name in finder. And, it should also work if you invoke it by giving its name with any absolute or relative pathname to your shell to invoke it, e.g., $PWD/script_name or ./script_name.
If, however, you invoke the script by just using its name (without specifying the directory in which it is located), you could end up with $0 just being script_name if one of the directories included in your $PATH variable is .. If this happens, you can't cd to ${0%/*}. But the following is still likely to work in all cases I can think of with what you're doing:
It might also work with ${BASH_SOURCE[0]}, but that would depend on which version of bash is being used.
Good luck,
Don
This User Gave Thanks to Don Cragun For This Post:
The script to get the db user password from LDAP does not work on AIX 5.3. It's using bash. Our current shell is /usr/bin/shell.
How can i make changes to this script so that it can run on aix with current shell with out installing bash.
We tried making but din't work.
... (0 Replies)
Hi there,
i was presented with a challenge that is beyond my current shell knowledge: how can you have a script that executed interactive will change your current working directory?
Example (under MacOS):
1. start Terminal and my current working directory is my home folder
2. execute a... (3 Replies)
Hi ,
I am trying to :wall: my head while scripting ..I am really new to this stuff , never did it before :( .
how to find cpu's system high time and user time high in a script??
thanks , help would be appreciated !
:) (9 Replies)
Hi ppl hope to have your advice, i am run out of idea...
I have 3 scripts: a.sh, b.sh, and c.sh
a.sh resided in /etc/init.d
b.sh and c.sh /opt/xSystem
I intend to start my system with "service" command which will trigger my a.sh
service a.sh start
then.
a.sh will trigger... (4 Replies)
how can i get the absolute path of whatever directory a script and/or command is in when it is run?
i want to know the directory. say for instance, if i were to run the "who" command, i want to know exaclty where the who command is located.
if a user ran a script, i want to know where there... (2 Replies)
when user types "pwd.sh joe" at command line, it generates pwd as abc123 and when user types "pwd.sh jane" at command line, it generates pwd as abc123.
pwd will change every 90 days.
my pwd file will be always abc123 until i change joe/jane/bob pwd manually. (3 Replies)
Hello everyone!
I'm developing a MacOs Application in python and I'm having some issues trying to find information related to the power button pressed event. I know that in Ubuntu 14.04 you can find information about it on the acpi folders, but I realized that here in Mac that process is... (0 Replies)
Some hackers found a security hole in macOS High Sierra and tweeted it to the world before telling Apple about the problem. You can see the details from PC Magazine's daily news here: Apple Releases Fix for MacOS High Sierra 'Root' Bug. The original story this morning was published before a patch... (6 Replies)
Hello,
I am running a bash script to do an rsync back on a computer running MacOS High Sierra. This is the script I am using,
#!/bin/bash
# main backup location, trailing slash included
backup_loc="/Volumes/Archive_Volume/00_macos_backup/"
# generic backup function
function backup {... (12 Replies)
Hello,
I have a backup script that runs an rsync backup to an external drive. I use the script frequently on Windows and Linux and have installed it on a Mac. The script has an option to run shutdown after the backup has completed. Since backup can take hours to run, this is an option that is... (10 Replies)
Discussion started by: LMHmedchem
10 Replies
LEARN ABOUT SUNOS
ln
ln(1B) SunOS/BSD Compatibility Package Commands ln(1B)NAME
ln - make hard or symbolic links to files
SYNOPSIS
/usr/ucb/ln [-fs] filename [linkname]
/usr/ucb/ln [-fs] pathname... directory
DESCRIPTION
The /usr/ucb/ln utility creates an additional directory entry, called a link, to a file or directory. Any number of links can be assigned
to a file. The number of links does not affect other file attributes such as size, protections, data, etc.
filename is the name of the original file or directory. linkname is the new name to associate with the file or filename. If linkname is
omitted, the last component of filename is used as the name of the link.
If the last argument is the name of a directory, symbolic links are made in that directory for each pathname argument; /usr/ucb/ln uses the
last component of each pathname as the name of each link in the named directory.
A hard link (the default) is a standard directory entry just like the one made when the file was created. Hard links can only be made to
existing files. Hard links cannot be made across file systems (disk partitions, mounted file systems). To remove a file, all hard links
to it must be removed, including the name by which it was first created; removing the last hard link releases the inode associated with the
file.
A symbolic link, made with the -s option, is a special directory entry that points to another named file. Symbolic links can span file sys-
tems and point to directories. In fact, you can create a symbolic link that points to a file that is currently absent from the file sys-
tem; removing the file that it points to does not affect or alter the symbolic link itself.
A symbolic link to a directory behaves differently than you might expect in certain cases. While an ls(1) on such a link displays the
files in the pointed-to directory, an `ls -l' displays information about the link itself:
example% /usr/ucb/ln -s dir link
example% ls link
file1 file2 file3 file4
example% ls -l link
lrwxrwxrwx 1 user 7 Jan 11 23:27 link -> dir
When you use cd(1) to change to a directory through a symbolic link, you wind up in the pointed-to location within the file system. This
means that the parent of the new working directory is not the parent of the symbolic link, but rather, the parent of the pointed-to direc-
tory. For instance, in the following case the final working directory is /usr and not /home/user/linktest.
example% pwd
/home/user/linktest
example% /usr/ucb/ln -s /var/tmp symlink
example% cd symlink
example% cd ..
example% pwd
/usr
C shell user's can avoid any resulting navigation problems by using the pushd and popd built-in commands instead of cd.
OPTIONS -f Force a hard link to a directory. This option is only available to the super-user, and should be used with extreme caution.
-s Create a symbolic link or links.
USAGE
See largefile(5) for the description of the behavior of ln when encountering files greater than or equal to 2 Gbyte ( 2**31 bytes).
EXAMPLES
Example 1: The /usr/ucb/ln command
The commands below illustrate the effects of the different forms of the /usr/ucb/ln command:
example% /usr/ucb/ln file link
example% ls -F file link
file link
example% /usr/ucb/ln -s file symlink
example% ls -F file symlink
file symlink@
example% ls -li file link symlink
10606 -rw-r--r-- 2 user 0 Jan 12 00:06 file
10606 -rw-r--r-- 2 user 0 Jan 12 00:06 link
10607 lrwxrwxrwx 1 user 4 Jan 12 00:06 symlink -> file
example% /usr/ucb/ln -s nonesuch devoid
example% ls -F devoid
devoid@
example% cat devoid
devoid: No such file or directory
example% /usr/ucb/ln -s /proto/bin/* /tmp/bin
example% ls -F /proto/bin /tmp/bin
/proto/bin:
x* y* z*
/tmp/bin:
x@ y@ z@
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWscpu |
+-----------------------------+-----------------------------+
SEE ALSO cp(1), ls(1), mv(1), rm(1), link(2), readlink(2), stat(2), symlink(2), attributes(5), largefile(5)NOTES
When the last argument is a directory, simple basenames should not be used for pathname arguments. If a basename is used, the resulting
symbolic link points to itself:
example% /usr/ucb/ln -s file /tmp
example% ls -l /tmp/file
lrwxrwxrwx 1 user 4 Jan 12 00:16 /tmp/file -> file
example% cat /tmp/file
/tmp/file: Too many levels of symbolic links
To avoid this problem, use full pathnames, or prepend a reference to the PWD variable to files in the working directory:
example% rm /tmp/file
example% /usr/ucb/ln -s $PWD/file /tmp
lrwxrwxrwx 1 user 4 Jan 12 00:16 /tmp/file ->
/home/user/subdir/file
SunOS 5.10 11 Mar 1994 ln(1B)